<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5591484190086716210</id><updated>2024-10-17T23:59:56.592+03:00</updated><category term="linux"/><category term="документация"/><category term="новости"/><category term="Интересности"/><category term="Google"/><category term="windows"/><category term="microsoft"/><category term="Файловая система"/><category term="юмор"/><category term="Управление пользователями"/><category term="BASH"/><category term="Работа в терминале"/><category term="Удаленный доступ"/><category term="SSH"/><category term="Blogspot templates"/><category term="Программное обеспечение"/><category term="Game"/><category term="Дизайн"/><category term="кино"/><category term="GIMP"/><category term="Krusader"/><category term="novel"/><category term="server"/><category term="Вкусные рецепты"/><category term="Кавказская пленница"/><category term="Содержание"/><category term="Телефоны GSM"/><category term="Управление пакетами"/><category term="антивирусы"/><category term="размышления"/><title type='text'>Записки ubuntu&#39;йца</title><subtitle type='html'>Делюсь вот своими наблюдашками.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>93</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-7600576240946658980</id><published>2011-06-14T19:26:00.000+02:00</published><updated>2011-06-14T19:26:50.655+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Программное обеспечение"/><title type='text'>Настройка virtualBox</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;VirtualBox&lt;/span&gt; — это программа эмулятор виртуального компьютера. В котором можно установить любую операционную систему. Например вы работаете в &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;Linux&lt;/span&gt;, но вам нужно что то сделать в &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;Windows&lt;/span&gt; или &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;FreeBSD&lt;/span&gt;, запустите программу, установите нужную вам систему и включайте ее в любое удобное вам время. &lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Есть правда в этой программе свои недостатки. Если устанавливать ее из меню установка/удаление программ, то установиться не полная версия а обрезная, которая не позволяет работать с &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;USB&lt;/span&gt; устройствами. Для исправления этого недостатка, устанавливайте только полную версию скачанную с сайта программы. Добавить новую группу (системаадминистрирование-пользователи и группы) &quot;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;vboxusers&lt;/span&gt;&quot; запустить в терминале:&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot;&gt;cat&lt;/span&gt; /&lt;span lang=&quot;EN-US&quot;&gt;etc&lt;/span&gt;/&lt;span lang=&quot;EN-US&quot;&gt;group&lt;/span&gt; | &lt;span lang=&quot;EN-US&quot;&gt;grep&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;vboxusers&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;узнать код юзера (например 125)&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;добавить в терминале:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;sudo&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;adduser&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;gard&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;vboxusers&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;добавить в терминале:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;i&gt;&lt;span lang=&quot;EN-US&quot;&gt;sudo&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;gedit&lt;/span&gt; /&lt;span lang=&quot;EN-US&quot;&gt;etc&lt;/span&gt;/&lt;span lang=&quot;EN-US&quot;&gt;fstab&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;и в открывшемся файле добавить:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;i&gt;# 125 is the vboxusers group&lt;br /&gt;
none /proc/bus/usb usbfs devgid=125,devmode=664 0 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;сохраняем файл, вводим &lt;i&gt;&lt;span lang=&quot;EN-US&quot;&gt;sudo&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;mount&lt;/span&gt; -&lt;span lang=&quot;EN-US&quot;&gt;a&lt;/span&gt;&lt;/i&gt; и перезагружаем компьютер. Открываем &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;virtualbox&lt;/span&gt;, устанавливаем &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;windowsXP&lt;/span&gt;, выбираем &quot;свойства&quot;-&quot;&lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;USB&lt;/span&gt;&quot; нажимаем на кнопку &quot;добавить пустой фильтр&quot;. При загрузке виртуальной машины, вставляем любое устройство в &lt;span lang=&quot;EN-US&quot; style=&quot;mso-ansi-language: EN-US;&quot;&gt;USB&lt;/span&gt;, выбираем в окне &quot;устройства&quot;-&quot;подключенное устройство&quot; и пользуемся...&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;span class=&quot;fullpost&quot;&gt;  &lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/7600576240946658980/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/7600576240946658980' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/7600576240946658980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/7600576240946658980'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2011/06/virtualbox.html' title='Настройка virtualBox'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-5310067511735382081</id><published>2007-09-04T09:47:00.000+03:00</published><updated>2007-09-04T09:50:21.789+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Интересности"/><title type='text'>Как Linux и Vista город не поделили.</title><content type='html'>Шведы всегда жили чуть наособицу от остальной Европы. Теперь некоторые из них живут наособицу и от Интернета.&lt;br /&gt;&lt;br /&gt;Владельцы компьютеров с операционной системой Windows Vista из шведского города Лунд не могут выйти в Сеть. Во всяком случае, через обычный наземный канал.&lt;br /&gt;&lt;br /&gt;По данным местной газеты, все дело в том, что сети Лунда целиком и полностью находится под управлением ОС Linux - главный сервер города с Vista работать не может.&lt;br /&gt;&lt;br /&gt;Местный интернет-провайдер Lundis Energi обвиняет Microsoft в наличии программной ошибки. Местный представитель Microsoft уже посоветовал сменить конфигурацию сервера. Однако, как заявил провайдер, из-за чужих ошибок никто не намерен менять конфигурацию.&lt;br /&gt;&lt;br /&gt;Дело может быть не только в технической сложности процедуры. Как известно, фанаты Linux довольно холодно относятся к Microsoft в целом, а предложение поменять что-либо в собственных настройках может рассматриваться, как посягательства на собственную свободу. Не исключено, что город будет ждать до тех пор, пока ошибку не исправит Microsoft. Кажется ждать им в этом случае придется долго.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.e-katalog.com.ua/n1939.htm&quot;&gt;Источник.&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/5310067511735382081/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/5310067511735382081' title='Комментарии: 9'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/5310067511735382081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/5310067511735382081'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/09/linux-vista.html' title='Как Linux и Vista город не поделили.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-3594148735999349497</id><published>2007-08-29T10:23:00.000+03:00</published><updated>2007-08-29T10:29:08.668+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Интересности"/><title type='text'>Google: Прорыв в духе времени.</title><content type='html'>Попалась мне недавно книженция одна под названием &quot;Google: Прорыв в духе времени&quot;. В электронном правда виде. Прочитал всю не отрываясь от экрана монитора. В книге рассказывается абсолютно ВСЯ история создания и развития Google. Книжка очень интересная. Всем советую прочитать. Взять можно &lt;a href=&quot;ftp://89.41.98.152/google_book.zip&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/3594148735999349497/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/3594148735999349497' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/3594148735999349497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/3594148735999349497'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/08/google.html' title='Google: Прорыв в духе времени.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-2426557681269888822</id><published>2007-08-22T11:36:00.000+03:00</published><updated>2007-08-29T00:18:55.051+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BASH"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Работа в терминале"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>BASH. Часть 6. Раскрытие выражений</title><content type='html'>&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;Когда оболочка получает какую-то командную строку на выполнение, она до начала выполнения команды осуществляет &quot;грамматический разбор&quot; полученной командной строки. Одним из этапов такого &quot;разбора&quot; является раскрытие или подстановка выражений (expansion). В оболочке bash имеется семь типов подстановки выражений:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;раскрытие скобок (brace expansion);&lt;/li&gt;&lt;li&gt;замена знака тильды (tilde expansion);&lt;/li&gt;&lt;li&gt;подстановка параметров и переменных;&lt;/li&gt;&lt;li&gt;подстановка команд;&lt;/li&gt;&lt;li&gt;арифметические подстановки (выполняемые слева направо);&lt;/li&gt;&lt;li&gt;разделение слов (word splitting);&lt;/li&gt;&lt;li&gt;раскрытие шаблонов имен файлов и каталогов (pathname expansion).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Все эти операции выполняются именно в том порядке, как они здесь перечислены. Рассмотрим их последовательно.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;b&gt;Раскрытие скобок&lt;/b&gt;&lt;br /&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;Раскрытие скобок проще всего пояснить на примере. Предположим, что нам нужно создать сразу несколько подкаталогов в каком-то каталоге, или поменять владельца сразу у нескольких файлов. Эти действия можно выполнить с помощью следующих команд:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;[user]$ mkdir /usr/local/src/bash/ {old, new, dist, bugs}&lt;br /&gt;[root]# chown root /usr/{ucb/{ex, edit} , lib/{ex?.?*, how_ex}}&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;В первом случае в каталоге &lt;i&gt;/usr/local/src/bash/&lt;/i&gt; будут созданы подкаталоги old, new, dist и bugs. Во втором случае владелец будет изменен у файлов:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;/usr/ucb/ex&lt;br /&gt;/usr/ucb/ex&lt;br /&gt;/usr/lib/ex?.?*&lt;br /&gt;/usr/lib/how_ex&lt;br /&gt;/usr/ucb/edit&lt;br /&gt;/usr/ucb/edit&lt;br /&gt;/usr/lib/ex?.?*&lt;br /&gt;/usr/lib/how_ex&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;То есть для каждой пары скобок генерируются несколько отдельных строк (их число равно числу слов, стоящих внутри скобок) путем приписывания к каждому слову из скобок (спереди) того, что стоит перед скобкой, и приписывания в конец каждого полученного слова того, что стоит после скобки.&lt;br /&gt;&lt;br /&gt;Еще один пример: строка a{d,c,b}e при раскрытии скобок превращается в три слова ade асе abe. Раскрытие скобок выполняется до выполнения других видов подстановок в командной строке, причем все специальные символы, встречающиеся в командной строке, в том числе внутри скобок, сохраняются неизменными (они будут интерпретированы на следующих этапах анализа строки).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Замена тильды&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;Если слово начинается с символа тильды (~), все символы до первого слэша (или все символы, если слэша нет) трактуются как имя пользователя (login name). Если это имя есть пустая строка (то есть вслед за тильдой идет сразу слэш), то тильда заменяется на значение переменной НОМЕ. Если значение переменной НОМЕ не задано, тильда заменяется на полный путь к домашнему каталогу пользователя, запустившего оболочку.&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;Если вслед за знаком тильды (до слэша) стоит слово, совпадающее с именем одного из легальных пользователей, тильда и имя пользователя заменяются полным именем домашнего каталога этого пользователя. Если слово, следующее за тильдой, не является именем пользователя (и не пусто), то оно остается неизменным. Если вслед за знаком тильды стоит +, эти два знака заменяются на полное имя текущего каталога (то есть значение переменной PWD). Если за знаком тильды следует -, подставляется значение переменой OLDPWD.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Подстановка параметров и переменных&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;Символ $ используется для обозначения операций подстановки параметров, подстановки команд и подстановок арифметических выражений. Выражение или имя, следующее за $, может быть заключено в скобки; что необязательно, но удобно, т. к. позволяет отделить заменяемое выражение от следующих за ним слов или символов. Таким образом, чтобы в командной строке вызвать значение параметра (в частности, любой переменной), нужно вставить выражение вида $ {parameter}. Скобки необходимы только в том случае, если имя параметра состоит из нескольких цифр, или когда за именем следует символ, который не должен интерпретироваться как часть имени. Все значения переменных подвергаются подстановке знака тильды, раскрытию параметров и переменных, подстановке команд, подстановкам арифметических выражений, а также удалению специальных символов цитирования (см. ниже). Разделение слов не производится, за исключением случая &quot;$@&quot; (объяснение ниже ). Раскрытие шаблонов имен файлов и каталогов не производится.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Подстановка команд&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;Подстановка команд является очень мощным инструментом bash. Она заключается в замене имени команды на результат ее выполнения. Существует две формы подстановки команд:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$(command) и &#39;command&#39;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Если применяется вторая из этих форм, то обратный слэш внутри кавычек трактуется как литерал, кроме тех случаев, когда за ним следует $, &#39;, или \. Если же используется форма $(command), все символы внутри скобок составляют команду и ни один из них не считается специальным символом. Если подстановка производится внутри двойных кавычек, то в результатах подстановки не осуществляется разделение слов и раскрытие шаблонов имен файлов и каталогов.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Арифметичекие подстановки&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;Арифметические подстановки позволяют вычислить значение арифметического выражения и подставить вместо него результат. Существует две формы задания арифметических подстановок:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$[expression]&lt;br /&gt;$((expression))&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;где expression трактуется так, как если бы оно было заключено в двойные кавычки, но встречающиеся в expression двойные кавычки трактуются как простой литерал. Внутри expression выполняются подстановки параметров и команд.&lt;br /&gt;Синтаксис выражения expression подобен синтаксису арифметических выражений в языке С, подробнее об этом можно прочитать в разделе ARITHMETIC EVALUATION man-страницы по команде bash. Например, команда&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ echo $ ((2 + 3 * 5))&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;в качестве результата выдает &quot;17&quot;. Если выражение некорректно, bash выдает сообщение об ошибке.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Разделение слов&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;После завершения подстановок параметров, команд и арифметических выражений оболочка снова анализирует командную строку (в том виде, который она приобрела к этому моменту) и осуществляет разделение слов (word splitting). Эта операция заключается в том, что в командной строке ищутся все вхождения символов-разделителей, определенных в переменой IFS, и в соответствующих местах строки разделяются на отдельные слова. Если значение IFS равно пустой строке, разделение слов не производится. Если в командной строке не производилось никаких подстановок, то разбиение на слова не производится.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Раскрытие шаблонов имен файлов и каталогов&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;Подстановки имен путей и файлов (pathname expansion) используются для того, чтобы с помощью краткого образца или шаблона указать несколько имен файлов (или каталогов), соответствующих данному шаблону. После разделения слов, если не была задана опция -f, bash производит поиск в каждом слове командной строки символов *, ? и [. Если будет найдено слово с одним или несколькими вхождениями таких символов, то это слово рассматривается как шаблон, который должен быть заменен словами из лексикографически упорядоченного списка имен путей, соответствующих данному шаблону. Если имен, соответствующих шаблону, не найдено, и переменная nullglob не задана, слово не изменяется. Если эта переменная установлена, а путей, соответствующих шаблону, не найдено, слово удаляется из командной строки. Специальные символы шаблонов имеют следующее значение:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Символы шаблонов&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; - Соответствует произвольной строке символов, включая пустую строку. Например, my*.txt будет заменено на myday.txt, myweek.txt и mymonth.txt (если такие файлы существуют), a *.jpg соответствует всем файлам с расширением jpg в указанном каталоге&lt;br /&gt;&lt;br /&gt;&lt;b&gt;?&lt;/b&gt; - Соответствует любому одиночному символу. Например, вместо шаблона file?.txt будут подставлены имена file1.txt и filex.txt, но не file10.txt&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[...]&lt;/b&gt; - Соответствует любому символу из числа символов, указанных в скобках. Пары символов, разделенные знаком минуса, обозначают интервал; любой символ стоящий лексически между этими двумя символами, включая и символы, задающие интервал, соответствует шаблону. Если первым символом внутри скобок является (!) или (^), то считается, что шаблону (в данной позиции) соответствуют все символы, не указанные в скобках.&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;Шаблоны имен файлов очень часто применяются в командных строках, содержащих команду ls. Представьте себе, что вы хотите просмотреть информацию о содержимом каталога, в котором находится огромное количество разных файлов различных форматов, например, файлов с изображениями форматов GIF, JPEG, AVI и т. д. Чтобы получить только список файлов формата JPEG, вы можете использовать команду&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ ls *.jpg&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Если в каталоге имеется множество файлов, имена которых представлены четырехзначными номерами, то следующей командой можно вывести только список файлов с номерами от 0200 до 0499:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ ls -l 0[2-4]??.*&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Удаление специальных символов&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;&quot; indent=&quot;&quot;&gt;После того как все подстановки в командной строке сделаны, из нее еще удаляются все вхождения символов \, &#39; и &quot;, которые служили для отмены специального значения других символов.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Другие части.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-1.html&quot;&gt;BASH. Часть 1. Введение.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-2.html&quot;&gt;BASH. Часть 2. Специальные символы.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-3.html&quot;&gt;BASH. Часть 3. Выполнение команд.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-4.html&quot;&gt;BASH. Часть 4. Стандартный ввод/вывод.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-5.html&quot;&gt;BASH. Часть 5. Параметры и переменные. Окружение оболочки.&lt;/a&gt;&lt;br /&gt;BASH. Часть 6. Раскрытие выражений.&lt;br /&gt;&lt;br /&gt;По книге В.Костромина &quot;Linux для пользователя&quot;.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/2426557681269888822/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/2426557681269888822' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/2426557681269888822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/2426557681269888822'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/08/bash-6.html' title='BASH. Часть 6. Раскрытие выражений'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-289405143412358706</id><published>2007-08-09T09:51:00.000+03:00</published><updated>2007-08-09T09:56:08.889+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="юмор"/><title type='text'>Minesweeper. Видеоролик.</title><content type='html'>Кажется, что все знают эту виндовую игрушку. &lt;br /&gt;И вот, идя по стопам киностудий, снявших знаменитые фильмы по компьютерным игрушкам, некая студия решила снять свой ролик по этой милой игрушке. &lt;br /&gt;&lt;br /&gt;Смотреть &lt;a href=&quot;http://www.collegehumor.com/video:1770138&quot;&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/289405143412358706/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/289405143412358706' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/289405143412358706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/289405143412358706'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/08/minesweeper.html' title='Minesweeper. Видеоролик.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-8821591292984702710</id><published>2007-08-07T10:21:00.000+03:00</published><updated>2007-08-22T12:22:34.964+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BASH"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Работа в терминале"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>BASH. Часть 5. Параметры и переменные. Окружение оболочки.</title><content type='html'>&lt;p class=&quot;indent&quot;&gt;Понятие параметра в оболочке bash подобно понятию переменной в обычных языках программирования. Именем (или идентификатором) параметра может быть слово, состоящее из алфавитных символов, цифр и знаков подчеркивания (только первый символ этого слова не может быть цифрой), а также число или один из следующих специальных символов: *, @, #, ?, - (дефис), $, !, 0, _ (подчеркивание).&lt;span class=&quot;fullpost&quot;&gt;Говорят, что параметр задан или установлен, если ему присвоено значение. Значением может быть и пустая строка. Чтобы вывести значение параметра, используют символ $ перед его именем. Так, команда&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ echo name&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;выдаст на экран слово name, а команда&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ echo $name&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;выдаст значение переменной name (если таковое, конечно, задано).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Разновидности параметров&lt;/b&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Параметры разделяются на три класса: &lt;i&gt;позиционные параметры&lt;/i&gt;, &lt;i&gt;специальные параметры&lt;/i&gt; (именами которых как раз и служат перечисленные только что специальные символы) и &lt;i&gt;переменные оболочки&lt;/i&gt;. Имена (идентификаторы) позиционных параметров состоят из одной или более цифр (только не из одиночного нуля). Значениями позиционных параметров являются аргументы, которые были заданы при запуске оболочки (первый аргумент является значением позиционного параметра 1, и т. д.). Изменить значение позиционного параметра можно с помощью встроенной команды &lt;i&gt;set&lt;/i&gt;. Значения этих параметров изменяются также на время выполнения оболочкой одной из функций. &lt;i&gt;Специальные параметры&lt;/i&gt; являются шаблонами, замена (подстановка) которых производится следующим образом.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Специальные параметры.&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;*&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Заменяется позиционными параметрами, начиная с первого. Если замена производится внутри двойных кавычек, то этот параметр заменяется на одно-единственное слово, составленное из всех позиционных параметров, разделенных первым символом специальной переменной IFS (о ней будет сказано ниже). То есть &quot;$*&quot; эквивалентно &quot;$1с$2с. . .&quot;, где с— первый символ в значении переменной IFS. Если IFS присвоено пустое значение или ее значение не установлено, параметры разделяются пробелами&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;@&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Заменяется позиционными параметрами, начиная с первого. Если замена производится внутри двойных кавычек, то каждый параметр заменяется отдельным словом. Так, &quot;$@&quot; эквивалентно &quot;$1&quot; &quot;$2&quot; ... Если позиционных параметров нет, то значение не присваивается (параметр @ просто удаляется)&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;#&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Заменяется десятичным значением числа позиционных параметров&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;?&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Заменяется статусом выхода последнего из выполнявшихся на переднем плане программных каналов&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;-&lt;/b&gt; (дефис)&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Заменяется текущим набором значений флагов, установленных с помощью встроенной команды set или при запуске самой оболочки&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;$&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Заменяется идентификатором процесса (PID) оболочки&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;!&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Заменяется идентификатором процесса (PID) последней из выполняющихся фоновых (асинхронно выполнявшихся) команд&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;0&lt;/b&gt;&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Заменяется именем оболочки или запускаемого скрипта. Если bash запускается для выполнения командного файла, $0 равно имени этого файла. В противном случае это значение равно полному пути к оболочке&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;&lt;b&gt;_&lt;/b&gt; (подчеркивание)&lt;/dt&gt;&lt;br /&gt;&lt;dd&gt;Заменяется последним аргументом предыдущей из выполнявшихся команд (если это параметр или переменная, то подставляется ее значение)&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Специальные параметры, перечисленные в приведенной выше таблице, отличаются тем, что на них можно только ссылаться; присваивать им значения нельзя. Переменная с точки зрения оболочки — это параметр, обозначаемый именем. Значения переменным присваиваются с помощью оператора следующего вида&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ name=value&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;где &lt;i&gt;name&lt;/i&gt; — имя переменной, a &lt;i&gt;value&lt;/i&gt; — присваиваемое ей значение (может быть пустой строкой). Имя переменой может состоять только из цифр и букв и не может начинаться с цифры. Значением может быть любой текст. Если значение содержит специальные символы, то его надо взять в кавычки. Присвоенное значение этих кавычек не содержит, естественно. Если переменная задана, то ее можно удалить, используя встроенную команду оболочки &lt;i&gt;unset&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Набор всех установленных переменных оболочки с присвоенными им значениями называется окружением (environment) или средой оболочки. Вы можете просмотреть его с помощью команды set без параметров (только, может быть, следует организовать конвейер &lt;i&gt;set | less&lt;/i&gt;). В выводе этой команды все переменные окружения перечисляются в алфавитном порядке. Для того чтобы просмотреть значение одной конкретной переменной, вместо команды set (в выводе которой нужную переменную еще искать и искать) можно воспользоваться командой&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ echo $rame&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;(правда, в этом случае вы должны знать имя интересующей вас переменной).&lt;br /&gt;&lt;br /&gt;Среди переменных, которые вы увидите в выводе команды set, встречаются очень интересные переменные. Обратите, например, внимание на переменную RANDOM. Если вы несколько раз подряд выполните команду&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ echo $RANDOM&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;вы каждый раз будете получать новое значение. Дело в том, что эта переменная возвращает случайное целое из интервала 0—32768.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Приглашения оболочки&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;indent&quot;&gt;Одна из очень важных переменных имеет имя PS1. Эта переменная задает вид приглашения, которое bash выводит, когда ожидает ввода очередной команды пользователем. По умолчанию этой переменной присвоено значение &quot;\s-\v\$&quot;. Вообще-то в оболочке bash существует четыре приглашения, которые используются в разных ситуациях. Переменная PS1 задает вид строки приглашения, которая выдается тогда, когда оболочка ждет ввода команды. Вторичное приглашение, задаваемое переменной PS2, появляется тогда, когда оболочка ожидает от пользователя ввода еще каких-то данных, необходимых для продолжения работы запущенной команды или программы. По умолчанию переменная PS2 имеет значение &quot;&gt;&quot;. Вы уже имели возможность видеть это приглашение, когда запускали команду cat для ввода данных с клавиатуры в файл. Другой пример — команда ftp, после запуска которой приглашение тоже принимает такой вид. Приглашение, задаваемое переменной РSЗ, используется в команде select.&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;indent&quot;&gt;Приглашение, задаваемое переменной PS4, выводится перед каждой командой в то время, когда bash отслеживает процесс выполнения. Значение по умолчанию - &quot;+&quot;. Если у вас есть такое желание, вы можете изменить вид переменных PS1 и PS2. При этом можно использовать как любые символы, вводимые с клавиатуры, так и некоторое число специальных символов, которые при формировании строки приглашения декодируются в соответствии со списком, приведенной ниже (приведены только некоторые из них).&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Специальные символы для формирования приглашения&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;\а&lt;/b&gt; - Звуковой сигнал (ASCII-код 07)&lt;br /&gt;&lt;b&gt;\d&lt;/b&gt; - Дата в формате &quot;День, месяц, число&quot;, например, Срд, Окт, 17&lt;br /&gt;&lt;b&gt;\h&lt;/b&gt; - Имя хоста (hostname) до первой точки&lt;br /&gt;&lt;b&gt;\H&lt;/b&gt; - Полное имя хоста&lt;br /&gt;&lt;b&gt;\t&lt;/b&gt; - Текущее время в 24-часовом формате: HH:MM:SS (часы:минуты:секунды)&lt;br /&gt;&lt;b&gt;\T&lt;/b&gt; - Текущее время в 12-часовом формате: HH:MM:SS&lt;br /&gt;&lt;b&gt;\@&lt;/b&gt; - Текущее время в 12-часовом формате АМ/РМ&lt;br /&gt;&lt;b&gt;\u&lt;/b&gt; - Имя пользователя, запустившего оболочку&lt;br /&gt;&lt;b&gt;\w&lt;/b&gt; - Полное имя текущего рабочего каталога (начиная с корня)&lt;br /&gt;&lt;b&gt;\W&lt;/b&gt; - Текущий рабочий каталог (без указания пути)&lt;br /&gt;&lt;b&gt;\$&lt;/b&gt; - Символ #, если оболочка запущена суперпользователем, и символ $, если оболочка запущена обычным пользователем&lt;br /&gt;&lt;b&gt;\nnn&lt;/b&gt; - Символ, имеющий восьмеричный код nnn&lt;br /&gt;&lt;b&gt;\n&lt;/b&gt; - Новая строка (перевод строки)&lt;br /&gt;&lt;b&gt;\s&lt;/b&gt; - Имя оболочки&lt;br /&gt;&lt;b&gt;\#&lt;/b&gt; - Текущий номер команды&lt;br /&gt;&lt;b&gt;\\&lt;/b&gt; - Обратный слэш (a backslash)&lt;br /&gt;&lt;b&gt;\[&lt;/b&gt; - Начало последовательности непечатаемых символов (этот символ может быть использован для того, чтобы включить в текст подсказки последовательность управляющих символов терминала)&lt;br /&gt;&lt;b&gt;\1&lt;/b&gt; - Конец последовательности непечатаемых символов&lt;br /&gt;&lt;b&gt;\!&lt;/b&gt; - Порядковый номер данной команды в истории команд&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;indent&quot;&gt;Текущий номер команды (порядковый номер выполняемой команды в рамках текущей сессии) может отличаться от номера данной команды в списке истории команд, поскольку последний включает в себя команды, которые были сохранены в файле истории команд. После того как значение переменной, определяющей подсказку, прочитано оболочкой, в нем могут быть произведены подстановки в соответствии с правилами расширения параметров, подстановок в именах команд и арифметических выражениях, а также разбиения слов (word splitting). Например, после выполнения команды (поскольку в строке имеется пробел, кавычки обязательны)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[root]# PSl=&quot;[\u@\h \W]\$&quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;в стандартном приглашении будет выводиться квадратная скобка, имя пользователя, символ @, имя компьютера, пробел, название текущего каталога (без указания пути), закрывающая квадратная скобка и символ $ (если в оболочке работает простой пользователь) или § (если оболочка запущена от имени пользователя root).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Переменная PATH&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;indent&quot;&gt;Еще одна очень важная переменная имеет имя PATH. Она задает перечень путей к каталогам, в которых &lt;i&gt;bash&lt;/i&gt; осуществляет поиск файлов (в частности, файлов с командами) в тех случаях, когда полный путь к файлу не задан в командной строке. Отдельные каталоги в этом перечне разделяются двоеточиями. По умолчанию переменная PATH включает каталоги &lt;i&gt;/usr/local/bin, /bin, /usr/bin, /usr/XHR6/bin&lt;/i&gt;, т. е. имеет вид:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;/usr/local/bin:/bin:/usr/bin:/usr/XHR6/bin:&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Для того чтобы добавить каталог в этот список, нужно выполнить следующую команду:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[root]# РАТН=$ PATH:new_path&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;indent&quot;&gt;При осуществлении поиска оболочка просматривает каталоги именно в том порядке, как они перечислены в переменной PATH. Отметим, что можно включить в этот список и текущий каталог, добавив в переменную PATH точку. Однако этого не рекомендуется делать из соображений безопасности: злоумышленник может положить в общедоступный каталог команду, имя которой совпадает с одной из часто выполняемых суперпользователем команд, но выполняющую совершенно другие действия (особенно если текущий каталог стоит в начале перечня путей поиска).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Переменная IFS&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;indent&quot;&gt;Эта переменная задает разделители полей (Internal Field Separator), которые используются при операции разделения слов при преобразованиях командной строки, выполняемых оболочкой перед тем, как запустить командную строку на исполнение. Значение этой переменной по умолчанию — &lt;i&gt;&quot;&lt;Пробел&gt;&lt;Таb&gt;&lt;Символ_новой_строки&gt;&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Текущий и домашний каталоги&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;indent&quot;&gt;Имя текущего каталога сохраняется в переменной окружения (с именем PWD), и значение этой переменной изменяется при каждом запуске программы cd (а также при смене текущего каталога любым другим способом, например, через Midnight Commander). Аналогичным образом полное имя (с указанием пути) домашнего каталога пользователя, запустившего данный процесс, сохраняется в переменной НОМЕ.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Команда &lt;i&gt;export&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;indent&quot;&gt;Когда оболочка запускает на выполнение какую-то программу или команду, она передает им часть переменных окружения. Для того чтобы переменная окружения передавалась запускаемому из оболочки процессу, ее нужно задавать с помощью специальной команды export, т. е. вместо&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ name=value&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;надо записать&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ export name=value&lt;/i&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class=&quot;indent&quot;&gt;В таком случае все запускаемые из оболочки программы (в том числе вторичные экземпляры самой оболочки) будут иметь доступ к заданным таким образом переменным, т. е. могут вызывать их значения по именам.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;b&gt;Другие части.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-1.html&quot;&gt;BASH. Часть 1. Введение.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-2.html&quot;&gt;BASH. Часть 2. Специальные символы.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-3.html&quot;&gt;BASH. Часть 3. Выполнение команд.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-4.html&quot;&gt;BASH. Часть 4. Стандартный ввод/вывод.&lt;/a&gt;&lt;br /&gt;BASH. Часть 5. Параметры и переменные. Окружение оболочки.&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-6.html&quot;&gt;BASH. Часть 6. Раскрытие выражений&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:78%;&quot;&gt;Из книги Виктора Костромина &quot;Linux для пользователя&quot;.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/8821591292984702710/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/8821591292984702710' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/8821591292984702710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/8821591292984702710'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/08/bash-5.html' title='BASH. Часть 5. Параметры и переменные. Окружение оболочки.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-8978021364455334735</id><published>2007-08-02T10:52:00.000+03:00</published><updated>2007-08-22T12:23:22.128+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BASH"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Работа в терминале"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>BASH. Часть 4. Стандартный ввод/вывод.</title><content type='html'>&lt;b&gt;Потоки ввода/вывода&lt;/b&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;&lt;br /&gt;Когда программа запускается на выполнение, в ее распоряжение предоставляются три потока (или канала).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Стандартный ввод&lt;/b&gt; (standard input или stdin). По этому каналу данные передаются программе.&lt;br /&gt;&lt;b&gt;Стандартный вывод&lt;/b&gt; (standard output или stdout). По этому каналу программа выводит результаты своей работы.&lt;br /&gt;&lt;b&gt;Стандартный поток сообщений об ошибках&lt;/b&gt; (standard error или stderr). Поэтому каналу программы выдают информацию об ошибках.&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Из стандартного ввода программа может только читать, а два других потока могут использоваться программой только для записи. По умолчанию входной поток связан с клавиатурой, а выходной поток и поток сообщений об ошибках направлены на терминал пользователя. Другими словами, вся выходная информация запущенной пользователем команды или программы, а также все сообщения об ошибках выводятся в окно терминала. Однако, как мы увидим чуть ниже, можно перенаправить&lt;br /&gt;выходные сообщения (например, в файл).&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Для того чтобы продемонстрировать, как работает стандартный поток ошибок, выполните команду &lt;i&gt;ls&lt;/i&gt; с неверным аргументом, например, задав в качестве аргумента имя несуществующего файла. В таком случае &lt;i&gt;ls&lt;/i&gt; выведет сообщение об ошибке в стандартный поток ошибок. Для нас, однако, в данном случае стандартный поток ошибок неотличим от выходного потока, поскольку сообщение об ошибке мы видим в окне терминала. Работу со стандартными входным и выходным потоками лучше всего проиллюстрировать на примере команд &lt;i&gt;echo&lt;/i&gt; и &lt;i&gt;cat&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Команда &lt;i&gt;echo&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Команда echo предназначена для выдачи на стандартный вывод строки символов, которая задана ей в качестве аргумента. После этого она выдает сигнал перевода строки и завершается. Попробуйте выполнить команду&lt;br /&gt;&lt;i&gt;&lt;br /&gt;[user]$ echo &#39;Привет, дружище!&#39;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;и, думаю, дальнейших пояснений не потребуется (только используйте именно одиночные кавычки, иначе результат может быть несколько иным).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Команда &lt;i&gt;cat&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Подробно, что может эта команда, я опишу в другом цикле статей, а сейчас она нас интересует в основном потому, что чаще всего она работает как раз с входным и выходным потоками. По умолчанию выход команды &lt;i&gt;cat&lt;/i&gt; направляется в выходной поток. Чтобы убедиться, что эта команда по умолчанию воспринимает входной поток, запустите команду &lt;i&gt;cat&lt;/i&gt; без аргументов. В результате курсор переместится в новую строку, и более как будто ничего не будет происходить. В это время команда ожидает поступления символов во входном потоке. Введите любой символ и вы увидите, что он сразу же появился на экране, что говорит о том, что программа сразу же направила его в выходной поток. Можно продолжить ввод символов, и они также появятся на экране.&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Обычно клавиатура настроена на построчный ввод, поэтому если вы нажмете клавишу &lt;Enter&gt;, последняя набранная строка передается команде &lt;i&gt;cat&lt;/i&gt;, которая вновь выводит данные на монитор через стандартный вывод. Таким образом, каждая строка будет показана дважды: один раз при наборе и второй раз — командой &lt;i&gt;cat&lt;/i&gt;.&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Если нажать комбинацию клавиш &lt;Ctrl&gt;+&lt;D&gt;, которая служит командой окончания процедуры ввода, вы вновь вернетесь к подсказке в командной строке. Можно также использовать комбинацию клавиш &lt;Ctrl&gt;+&lt;C&gt;, которая является в оболочке командой завершения работы запущенной программы.&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Если команде &lt;i&gt;cat&lt;/i&gt; в качестве аргумента задать имя файла, это будет означать, что содержимое файла будет направлено во входной поток, откуда его примет команда &lt;i&gt;cat&lt;/i&gt; и выдаст в выходной поток. Но это только частный случай перенаправления ввода, очень полезного механизма оболочки, который, безусловно, заслуживает более подробного рассмотрения. &lt;br /&gt;&lt;br /&gt;В следующей статье будет рассмотрено перенаправление ввода/вывода (подробности использования операторов &lt;, &gt;, &gt;&gt;), каналы и фильтры.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Другие части.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-1.html&quot;&gt;BASH. Часть 1. Введение.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-2.html&quot;&gt;BASH. Часть 2. Специальные символы.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-3.html&quot;&gt;BASH. Часть 3. Выполнение команд.&lt;/a&gt;&lt;br /&gt;BASH. Часть 4. Стандартный ввод/вывод.&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-5.html&quot;&gt;BASH. Часть 5. Параметры и переменные. Окружение оболочки.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-6.html&quot;&gt;BASH. Часть 6. Раскрытие выражений&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:78%;&quot;&gt;Из книги Виктора Костромина &quot;Linux для пользователя&quot;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/8978021364455334735/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/8978021364455334735' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/8978021364455334735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/8978021364455334735'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/08/bash-4.html' title='BASH. Часть 4. Стандартный ввод/вывод.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-4249257660904928391</id><published>2007-08-01T10:42:00.000+03:00</published><updated>2007-08-22T12:23:49.464+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BASH"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Работа в терминале"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>BASH. Часть 3. Выполнение команд.</title><content type='html'>&lt;p class=&quot;indent&quot;&gt;В одной из предыдущих статей я кратко описывал &lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/blog-post_25.html&quot;&gt;типовые последовательности&lt;/a&gt; команд. Начиная с этой статьи все, что там описывалось, будет дано более подробно. Одна из основных функций оболочки состоит в том, чтобы организовать исполнение команд пользователя, вводимых им в командной строке. В частности, оболочка предоставляет пользователю два специальных оператора для организации задания команд в командной строке: &quot;;&quot; и &quot;&amp;&quot;.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;b&gt;Оператор &quot;;&quot;&lt;/b&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Хотя чаще всего мы задаем команды в командной строке по одной, имеется возможность задать в одной строке несколько команд, которые будут выполнены последовательно, одна за другой. Для этого используется специальный символ — оператор &quot;;&quot;. Если не поставить этот разделитель команд, то последующая команда может быть воспринята как аргумент предыдущей. Таким образом, если написать в командной строке что-то вроде&lt;br /&gt;&lt;br /&gt;&lt;i&gt;[user]$ command1 ; coramand2&lt;/i&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;то оболочка вначале запустит на выполнение команду &lt;i&gt;command1&lt;/i&gt;, дождется, пока ее выполнение завершится, после чего запустит &lt;i&gt;command2&lt;/i&gt;, дождется ее завершения, после чего снова выведет приглашение командной строки, ожидая следующих действий пользователя.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Оператор &amp;&lt;/b&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Оператор &quot;&amp;&quot; используется для того, чтобы организовать исполнение команд в фоновом режиме. Если поставить значок &amp; после команды, то оболочка вернет управление пользователю сразу после запуска команды, не дожидаясь, пока выполнение команды завершится. Например, если задать в командной строке &lt;i&gt;&quot;command1 &amp; command2 &amp;&quot;&lt;/i&gt;, то оболочка запустит команду &lt;i&gt;command1&lt;/i&gt;, сразу же затем команду &lt;i&gt;command2&lt;/i&gt; и затем немедленно вернет управление пользователю.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Операторы &quot;&amp;&amp;&quot; и &quot;||&quot;&lt;/b&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Операторы &quot;&amp;&amp;&quot; и &quot;||&quot; являются управляющими операторами. Если в командной строке СТОИТ &lt;i&gt;command1 &amp;&amp; command2&lt;/i&gt;, TO &lt;i&gt;command2&lt;/i&gt; выполняется В ТОМ И ТОЛЬКО в том случае, если статус выхода из команды &lt;i&gt;command1&lt;/i&gt; равен нулю, что говорит об успешном ее завершении. Аналогично, если командная строка имеет вид &lt;i&gt;command1 || command2&lt;/i&gt;, то команда &lt;i&gt;command2&lt;/i&gt; выполняется тогда и только тогда, когда статус выхода из команды &lt;i&gt;command1&lt;/i&gt; отличен от нуля.&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Можно только кратко сказать, что оболочка должна найти код команды, загрузить его в память, передать команде аргументы, заданные в командной строке, а после завершения выполнения соответствующего процесса передать каким-то образом пользователю или другому процессу результаты выполнения данной команды. Эти этапы сейчас и рассмотрим.&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Итак, первый этап — поиск кода команды. Команды бывают встроенные (те, код которых включен в код самой оболочки) и внешние (код которых расположен в отдельном файле на диске). Встроенную команду оболочка всегда найдет, а для поиска внешней команды пользователь, в принципе, должен указать оболочке полный путь до соответствующего файла. Однако для облегчения жизни пользователей оболочка умеет искать внешние команды в каталогах, которые перечислены в специально заданных &quot;путях поиска&quot;. Только если она не находит нужных файлов в таких каталогах, она решает, что пользователь ошибся при вводе имени команды. О том, как оболочка организует передачу данных исполняемой команде и выдачу результатов пользователю будет написано в следующей статье.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Другие части.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-1.html&quot;&gt;BASH. Часть 1. Введение.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-2.html&quot;&gt;BASH. Часть 2. Специальные символы.&lt;/a&gt;&lt;br /&gt;BASH. Часть 3. Выполнение команд.&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-4.html&quot;&gt;BASH. Часть 4. Стандартный ввод/вывод.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-5.html&quot;&gt;BASH. Часть 5. Параметры и переменные. Окружение оболочки.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-6.html&quot;&gt;BASH. Часть 6. Раскрытие выражений&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:78%;&quot;&gt;Из книги Виктора Костромина &quot;Linux для пользователя&quot;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/4249257660904928391/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/4249257660904928391' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/4249257660904928391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/4249257660904928391'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/08/bash-3.html' title='BASH. Часть 3. Выполнение команд.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-133728430149165552</id><published>2007-07-31T11:39:00.000+03:00</published><updated>2007-08-22T12:24:10.734+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BASH"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Работа в терминале"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>BASH. Часть 2. Специальные символы.</title><content type='html'>&lt;p class=&quot;indent&quot;&gt;Оболочка bash использует несколько символов из числа 256 символов набора ASCII в специальных целях либо для обозначения некоторых операций, либо для преобразования выражений. В число таких символов входят:&lt;br /&gt;&lt;br /&gt;- ~ ! @ # $ % ^ &amp; * ( ) - [ ] { } : ; &#39; &quot; / \ &gt; &lt;&lt;br /&gt;&lt;br /&gt;а также символ с кодом “0” (ноль), символ возврата каретки (генерируемый клавишей &lt;Enter&gt;) и пробел. В зависимости от ситуации эти специальные символы могут трактоваться либо в их специальном значении, либо в буквальном, т. е. как литералы. Но мы в основном будем предполагать, что все эти символы зарезервированы и не должны использоваться в качестве литералов.&lt;/p&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Это касается в первую очередь использования их в именах файлов и каталогов. Однако символы (_) , (-) и (.) (знак подчеркивания, дефис и точка) часто используются в именах файлов, так что именно этот пример показывает, что специальное значение эти символы имеют не всегда. В именах файлов только символы точки (.) и слэша (/) имеют специальное значение. Символ слэша служит для разделения имен отдельных каталогов, а точка имеет специальное значение, только если она  является первым символом в имени файла (что означает, что файл является &quot;скрытым&quot;).&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Рассматривать все эти символы я буду постепенно в следующих статьях, по мере того, как они потребуются. Однако есть три символа, которые имеют особое значение и которые поэтому необходимо рассмотреть в первую очередь.&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Символ (\) (обратный слэш) можно назвать &quot;символом отмены специального значения&quot; для любого из специальных символов, который стоит сразу вслед за \. Например, если мы хотим использовать символ пробела в имени файла, мы должны вместо простого пробела поставить (\). Например, возможна следующая команда:&lt;/p&gt;&lt;br /&gt;&lt;i&gt;[user]$ ср two_words  two\words&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Символы &#39; и &quot; (одинарные и двойные кавычки) могут быть названы &quot;символами цитирования&quot;. Любой из этих символов всегда используется в паре с его копией для обрамления какого-то выражения. Если какой-то текст взят в одинарные кавычки, то все символы внутри этих кавычек воспринимаются как литералы, никаким из них не придается специального значения. Если вернуться к тому же примеру с пробелами в имени файла, то можно сказать, что для того, чтобы дать файлу имя &quot;two words&quot; надо взять имя в кавычки:&lt;/p&gt;&lt;br /&gt;&lt;i&gt;[user]$ ср two_words &#39;two words&#39;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Различие в использовании символов (&#39;) и (&quot;) состоит в том, что внутри одинарных кавычек теряют специальное значение все символы, а внутри двойных кавычек — все специальные символы кроме ($), (&#39;) и (\) (знака доллара, одинарных кавычек и обратного слэша).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Другие части:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-1.html&quot;&gt;BASH. Часть 1. Введение.&lt;/a&gt;&lt;br /&gt;BASH. Часть 2. Специальные символы.&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-3.html&quot;&gt;BASH. Часть 3. Выполнение команд.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-4.html&quot;&gt;BASH. Часть 4. Стандартный ввод/вывод.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-5.html&quot;&gt;BASH. Часть 5. Параметры и переменные. Окружение оболочки.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-6.html&quot;&gt;BASH. Часть 6. Раскрытие выражений&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:78%;&quot;&gt;Из книги Виктора Костромина &quot;Linux для пользователя&quot;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/133728430149165552/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/133728430149165552' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/133728430149165552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/133728430149165552'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/bash-2.html' title='BASH. Часть 2. Специальные символы.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-5438962688556462367</id><published>2007-07-30T12:38:00.000+03:00</published><updated>2007-08-22T12:24:38.563+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BASH"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Работа в терминале"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>BASH. Часть 1. Введение.</title><content type='html'>&lt;p class=&quot;indent&quot;&gt;Начну  потихоньку выкладывать статьи, освящающие работу с системой Linux в текстовом режиме, другими словами, с консоли или терминала. Начинающему пользователю может казаться, что он никогда не будет работать в этом режиме, поскольку существует графический режим. Однако это мнение ошибочно, ибо многие действия оказывается быстрее и удобнее выполнять именно в текстовом режиме. Даже находясь в графическом режиме, вы часто будете открывать окно эмулятора терминала и выполнять необходимые действия в этом окне. Поскольку Linux — это многозадачная ОС, уже в текстовом режиме обеспечивается возможность работы в нескольких окнах. А для редактирования простого текста или HTML-файла вовсе не обязательно запускать графическую оболочку.&lt;/p&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;b&gt;Что такое оболочка?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Хотя мы часто говорим, что &quot;пользователь работает с операционной системой&quot;, фактически это не совсем верно, поскольку на деле взаимодействие с пользователем организует специальная программа. Существует два вида таких программ — оболочка, или shell, для работы в текстовом режиме (интерфейс командной строки) и графический интерфейс пользователя GUI (Graphical User Interface), организующий взаимодействие с пользователем в графическом режиме.&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Сразу надо сказать, что в принципе любая программа в Linux может быть запущена как через оболочку (если запущен Х-сервер), так и через графический интерфейс пользователя. Запуск программ из оболочки эквивалентен (двойному) щелчку мышкой по иконке программы в GUI. Но, с другой стороны, некоторые программы не приспособлены для запуска через GUI и, соответственно, могут быть исполнены только из командной строки.&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Собственно говоря, название &quot;оболочка&quot;, на мой взгляд, не совсем верно. Мне кажется, что правильнее было бы называть эту программу командным процессором, или интерпретатором команд. Но так уж повелось во всех UNIX-системах, что интерпретатор команд для текстового режима называют оболочкой.&lt;br /&gt;Когда-то (в первых UNIX-системах) это была программа с именем sh, которое было сокращением от shell. Потом были разработаны несколько ее улучшенных вариантов, в частности, Bourne shell — расширенная версия sh, написанная Стивом Борном (Steve Bourne). В рамках проекта GNU (проект Р. Столлмана по разработке свободного ПО) была создана оболочка bash, название которой расшифровывается как Boume-ggain shell, т. е. &quot;снова оболочка Борна&quot;. По-английски в этом названии просматривается еще и игра слов, связанная с тем, что Bourne звучит как borne (рождаться,  рожденный), и получается &quot;заново рожденная shell&quot;. Оболочка bash была написана Брайеном Фоксом (Brian Fox — основной разработчик) и Четом Рэми (Chet Rarney). Именно bash и будет далее рассматриваться, и всюду, где говорится об оболочке вообще, смело можете считать, что речь идет о bash.&lt;/p&gt;&lt;br /&gt;&lt;p class=&quot;indent&quot;&gt;Сама по себе оболочка bash не выполняет никаких прикладных задач. Но она обеспечивает выполнение всех приложений: нахождение вызываемых программ, их запуск и организацию ввода/вывода. Кроме того, оболочка отвечает за работу с переменными окружения и выполняет некоторые преобразования (подстановки) аргументов. Но главное свойство оболочки, которое делает ее мощным инструментом пользователя — это то, что она включает в себя простой язык программирования. Как давно доказано в математике, любой алгоритм можно построить из пары-тройки основных операций и одного условного оператора. Реализацию условных операторов (а  также операторов цикла) и берет на себя оболочка. Она использует все остальные утилиты и программы (и те, которые имеются в составе операционной системы, и те, что устанавливаются отдельно) как базовые операции поддерживаемого ею языка программирования, обеспечивает передачу им аргументов, а также передачу результатов их работы другим программам или&lt;br /&gt;пользователю. В результате получается очень мощный язык программирования. И в этом основная сила и одна из существенных функций оболочки.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Другие части.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;BASH. Часть 1. Введение.&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-2.html&quot;&gt;BASH. Часть 2. Специальные символы.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-3.html&quot;&gt;BASH. Часть 3. Выполнение команд.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-4.html&quot;&gt;BASH. Часть 4. Стандартный ввод/вывод.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-5.html&quot;&gt;BASH. Часть 5. Параметры и переменные. Окружение оболочки.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-6.html&quot;&gt;BASH. Часть 6. Раскрытие выражений&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:78%;&quot;&gt;Из книги Виктора Костромина &quot;Linux для пользователя&quot;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/5438962688556462367/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/5438962688556462367' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/5438962688556462367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/5438962688556462367'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/bash-1.html' title='BASH. Часть 1. Введение.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-133085653689813013</id><published>2007-07-27T11:07:00.000+03:00</published><updated>2007-07-27T11:27:03.065+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GIMP"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Программное обеспечение"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>GIMP. Краткий список клавиатурных сокращений.</title><content type='html'>Привожу небольшой список клавиатурных сокращений, используемых в графическом редакторе GIMP, начиная с версии 2.0. Если у кого-то есть дополнения к данному списку, то милости просим, дополняйте...&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;b&gt;Файл:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ctr+N&lt;/b&gt; - Создать файл&lt;br /&gt;&lt;b&gt;Ctrl+О&lt;/b&gt; - Открыть файл&lt;br /&gt;&lt;b&gt;Ctrl+W&lt;/b&gt; - Закрыть файл&lt;br /&gt;&lt;b&gt;Ctrl+S&lt;/b&gt; - Сохранить файл&lt;br /&gt;&lt;b&gt;Shift+Ctrl+S&lt;/b&gt; - Сохранить файл как&lt;br /&gt;&lt;b&gt;Ctrl+Q&lt;/b&gt; - Выход&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Редактирование изображения:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ctrl+Z&lt;/b&gt; - отменить последнее действие&lt;br /&gt;&lt;b&gt;Ctrl+R&lt;/b&gt; - повторить последнее действие&lt;br /&gt;&lt;b&gt;Ctrl+X&lt;/b&gt; - вырезать выделение&lt;br /&gt;&lt;b&gt;Ctrl+C&lt;/b&gt; - копировать выделение&lt;br /&gt;&lt;b&gt;Ctrl+V&lt;/b&gt; - вставить выделение&lt;br /&gt;&lt;b&gt;Ctrl+K&lt;/b&gt; - очистить изображение/выделение до фона&lt;br /&gt;&lt;b&gt;Ctrl+&quot;,&quot;(запятая)&lt;/b&gt; - залить изображение/выделение цветом фона&lt;br /&gt;&lt;b&gt;Ctrl+&quot;.&quot;(точка)&lt;/b&gt; - залить изображение/выделение цветом переднего плана&lt;br /&gt;&lt;b&gt;Shift+Ctrl+C&lt;/b&gt; - копировать изображение/выделение в буфер с именем...&lt;br /&gt;&lt;b&gt;Shift+Ctrl+V&lt;/b&gt; - вставить изображение/выделение из буфера с именем...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Выделение изображениями:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ctrl+A&lt;/b&gt; - выделить все&lt;br /&gt;&lt;b&gt;Ctrl+I&lt;/b&gt; - инвертировать выдление&lt;br /&gt;&lt;b&gt;Shift+Ctrl+A&lt;/b&gt; - отменить выделение&lt;br /&gt;&lt;b&gt;Shift+Ctrl+L&lt;/b&gt; - создать &quot;плавающее&quot; выделение&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Просмотр изображения:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Shift+&quot;+&quot;(плюс)&lt;/b&gt; - увеличение размера&lt;br /&gt;&lt;b&gt;Shift+&quot;-&quot;(минус)&lt;/b&gt; - уменьшение размера&lt;br /&gt;&lt;b&gt;Shift+1&lt;/b&gt; - просмотр 1:1&lt;br /&gt;&lt;b&gt;Ctrl+E&lt;/b&gt; - подгонка окна под размер изображения&lt;br /&gt;&lt;b&gt;Ctrl+Т&lt;/b&gt; - показать/скрыть выделение&lt;br /&gt;&lt;b&gt;Shift+Ctrl+I&lt;/b&gt; - просмотр информации об изображении&lt;br /&gt;&lt;b&gt;Shift+Ctrl+N&lt;/b&gt; - открытие окна навигации&lt;br /&gt;&lt;b&gt;Shift+Ctrl+Т&lt;/b&gt; - показать направляющие&lt;br /&gt;&lt;b&gt;Shift+Ctrl+R&lt;/b&gt; - включить/выключить линейки&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Обработка изображения или слоя:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ctrl+D&lt;/b&gt; - создание копии изображения&lt;br /&gt;&lt;b&gt;Ctrl+M&lt;/b&gt; - объединить слои&lt;br /&gt;&lt;b&gt;Ctrl+H&lt;/b&gt; - прикрепить “плавающее” выделение&lt;br /&gt;&lt;b&gt;Shift+Ctrl+O&lt;/b&gt; - смещение слоя&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Инструменты:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;D&lt;/b&gt; - сбросить цвета&lt;br /&gt;&lt;b&gt;Х&lt;/b&gt; - поменять цвет переднего плана и фона&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Выделение:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;R&lt;/b&gt; - выделение прямоугольных областей&lt;br /&gt;&lt;b&gt;E&lt;/b&gt; - выделение эллиптических областей&lt;br /&gt;&lt;b&gt;F&lt;/b&gt; - выделение произвольных областей&lt;br /&gt;&lt;b&gt;Z&lt;/b&gt; - выделение связанных областей или &quot;Волшебная палочка&quot;&lt;br /&gt;&lt;b&gt;Shift+О&lt;/b&gt; - выделение по цвету&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Контуры:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;В&lt;/b&gt; - создание и редактирование контуров.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Вспомогательные инструменты:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;О&lt;/b&gt; - получение цвета из изображения или пипетка.&lt;br /&gt;&lt;b&gt;М&lt;/b&gt; - перемещение слоев и выделенных областей.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Модификация изображения:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Shift+С&lt;/b&gt; - кадрирование или изменение размеров изображения - &quot;скальпель&quot;&lt;br /&gt;&lt;b&gt;Shift+R&lt;/b&gt; - поворот слоев или выделенных областей.&lt;br /&gt;&lt;b&gt;Shift+Т&lt;/b&gt; - масштабирование слоев или выделенных областей.&lt;br /&gt;&lt;b&gt;Shift+S&lt;/b&gt; - искривление слоев или выделенных областей .&lt;br /&gt;&lt;b&gt;Shift+P&lt;/b&gt; - изменение перспективы или выделенных областей.&lt;br /&gt;&lt;b&gt;Shift+F&lt;/b&gt; - отражение слоев или выделенных областей.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Инструменты для рисования:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Т&lt;/b&gt; - текст.&lt;br /&gt;&lt;b&gt;Shift+В&lt;/b&gt; - заливка цветом или шаблоном.&lt;br /&gt;&lt;b&gt;L&lt;/b&gt; - заливка цветным градиентом .&lt;br /&gt;&lt;b&gt;N&lt;/b&gt; - рисование резкими линиями или &quot;карандаш&quot;.&lt;br /&gt;&lt;b&gt;Р&lt;/b&gt; - рисование мягкими линиями или &quot;кисть&quot;.&lt;br /&gt;&lt;b&gt;Shift+Е&lt;/b&gt; - стирание до фона или прозрачности или &quot;ластик&quot;&lt;br /&gt;&lt;b&gt;L&lt;/b&gt; - аэрограф.&lt;br /&gt;&lt;b&gt;К&lt;/b&gt; - рисование пером.&lt;br /&gt;&lt;b&gt;С&lt;/b&gt; - рисование с использованием шаблона или участка изображения - &quot;штамп&quot;.&lt;br /&gt;&lt;b&gt;V&lt;/b&gt; - резкость или размытость.&lt;br /&gt;&lt;b&gt;S&lt;/b&gt; - &quot;размазывание&quot; изображения.&lt;br /&gt;&lt;b&gt;Shift+D&lt;/b&gt; - осветление или затемнение штрихов.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Диалоги&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ctrl+L&lt;/b&gt; - диалог слоев&lt;br /&gt;&lt;b&gt;Ctrl+G&lt;/b&gt; - диалог градиентов&lt;br /&gt;&lt;b&gt;Ctrl+Р&lt;/b&gt; - диалог палитр&lt;br /&gt;&lt;b&gt;Shift+Ctrl+В&lt;/b&gt; - диалог кистей&lt;br /&gt;&lt;b&gt;Shift+Ctrl+Р&lt;/b&gt; - диалог шаблонов&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/133085653689813013/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/133085653689813013' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/133085653689813013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/133085653689813013'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/gimp.html' title='GIMP. Краткий список клавиатурных сокращений.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-2200893028851383936</id><published>2007-07-27T10:41:00.000+03:00</published><updated>2007-07-27T10:50:10.382+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>С Windows на Linux.</title><content type='html'>Просматривая архивы статей, написанные специалистами из IBM, наткнулся на интересный цикл, посвященный переходу с Windows на Linux. Статьи написаны простым и доступным языком и надеюсь помогут тем, кто собирается совершить такой переход.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-roadmap1/index.html&quot;&gt;Часть 1. Философия Linux&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-roadmap2/index.html&quot;&gt;Часть 2. Работа в консоли&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-roadmap3/index.html&quot;&gt;Часть 3. Введение в Webmin&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-roadmap4/index.html&quot;&gt;Часть 4. Администрирование пользователей&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-roadmap5/index.html&quot;&gt;Часть 5. Журналирование в Linux&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-roadmap6/index.html&quot;&gt;Часть 6. Работа с разделами и файловыми системами&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-roadmap7/index.html&quot;&gt;Часть 7. Работа с сетью&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-roadmap8/index.html&quot;&gt;Часть 8. Резервное копирование и восстановление&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-roadmap9/index.html&quot;&gt;Часть 9. Установка программного обеспечения&lt;/a&gt;&lt;br /&gt;&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/2200893028851383936/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/2200893028851383936' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/2200893028851383936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/2200893028851383936'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/windows-linux.html' title='С Windows на Linux.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-562679701360518258</id><published>2007-07-25T12:31:00.000+03:00</published><updated>2007-07-25T12:38:43.566+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>Типовые последовательности и псевдонимы команд.</title><content type='html'>Ниже рассмотренны последовательности команд, которые можно использовать при работе в командной строке.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;i&gt;команда &amp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Команда&lt;/i&gt; выполняется в дочернем командном интерпретаторе в фоновом режиме. Задания в фоновом режиме позволяют пользователям запускать множество программ через один единственный командный интерпретатор.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;команда1 | команда2&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Стандартный поток вывода команды &lt;i&gt;команда1&lt;/i&gt; направляется в стандартный поток ввода команды &lt;i&gt;каманда2&lt;/i&gt;. Обе команды могут выполняться одновременно. Этот механизм называется программным каналом.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;команда1; команда2&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Команды &lt;i&gt;команда1&lt;/i&gt; и &lt;i&gt;команда2&lt;/i&gt; выполняются последовательно.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;команда1 &amp;&amp; команда2&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Выполняется &lt;i&gt;команда1&lt;/i&gt;. Если она завершается успешно, за ней последовательно выполняется &lt;i&gt;команда2&lt;/i&gt;. Код возврата будет успешным, если обе команды завершились успешно.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;команда1 || команда2&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Выполняется &lt;i&gt;команда1&lt;/i&gt;. Если она завершается с ошибкой, последовательно запускается &lt;i&gt;команда2&lt;/i&gt;. Код возврата будет успешным, если хотя бы одна из команд завершилась успешно.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;команда &gt; foo&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Перенаправить стандартный поток выводы &lt;i&gt;команда&lt;/i&gt; в файл &lt;i&gt;foo&lt;/i&gt; (с перезаписью файла, если он существует)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;команда &gt;&gt; foo&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Перенаправить стандартный поток выводы &lt;i&gt;команда&lt;/i&gt; в файл &lt;i&gt;foo&lt;/i&gt; (данные добавляются в конец файла)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;команда &gt; foo 2&gt;&amp;1&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Перенаправить потоки стандартного вывода и стандартного вывода ошибок команды &lt;i&gt;команда&lt;/i&gt; в файл &lt;i&gt;foo&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;команда &lt; foo&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Содержимое файла &lt;i&gt;foo&lt;/i&gt; направляется в стандартный поток ввода команды &lt;i&gt;команда&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Псевдоним команды.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Для часто используемых команд можно установить псевдоним. Например:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;$ alias la=&#39;ls -la&#39;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Теперь &lt;i&gt;la&lt;/i&gt; работает как сокращенная форма &lt;i&gt;ls -la&lt;/i&gt;, которая выводит список всех фалов в полном формате.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/562679701360518258/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/562679701360518258' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/562679701360518258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/562679701360518258'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/blog-post_25.html' title='Типовые последовательности и псевдонимы команд.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-7946819761166473813</id><published>2007-07-24T12:18:00.000+03:00</published><updated>2007-07-30T09:14:46.718+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Файловая система"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>Файловая система изнутри.</title><content type='html'>&lt;p&gt;С точки зрения операционной системы, под файловой системой понимается внутренняя управляющая структура, заведующая хранением данных на физическом носителе, их поиском, извлечением и записью по запросам программ. Такие управляющие структуры в каждом семействе операционных систем строятся по схожим принципам. Так, DOS/Windows используют файловую систему FAT с вариантами FAT32 и VFAT, а также NTFS. Файловые системы UNIX-подобных ОС разнообразнее, но тоже могут быть объединены в одно семейство. Linux умеет работать со множеством файловых систем, как с родными, и с еще большим их количеством обмениваться данными.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Типичным представителем файловых систем UNIX является «вторая расширенная файловая система» ext2fs, основная до недавнего времени файловая система Linux. С момента выхода ядра версии 2.4.16 она начала уступать место «файловой системы по умолчанию» полностью совместимой с ней системе ext3fs. Рекомендуется использовать именно ext3fs, и именно она устанавливается по умолчанию инсталляторами большинства современных дистрибутивов.&lt;/p&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Файловая система ext2fs — предшественница ext3fs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Рассмотрим логическую структуру файловой системы ext2fs. Физически жесткий диск разбит на сектора размером 512 байт. Первый сектор дискового раздела в любой файловой системе считается загрузочной областью. В первичном разделе эта область содержит загрузочную запись — фрагмент кода, который инициирует процесс загрузки операционной системы при запуске. На других разделах эта область не используется. Остальные сектора объединены в логические блоки размером 1, 2 или 4 килобайта. Логический блок есть наименьшая адресуемая порция данных: данные каждого файла занимают целое число блоков. Блоки, в свою очередь, объединяются в группы блоков. Группы блоков и блоки внутри группы нумеруются последовательно, начиная с 1. Раздел диска, на котором сформирована файловая система ext2fs, может быть представлен такой схемой:&lt;br /&gt;&lt;br /&gt;Структуры данных, применяемые при работе с файловой системой ext2fs, описаны в заголовочном файле /usr/include/linux/ext2fs.h.&lt;br /&gt;Суперблок служит начальной точкой файловой системы и хранит всю информацию о ней. Он имеет размер 1024 байта и располагается по смещению 1024 байта от начала файловой системы. В каждой группе блоков он дублируется, что позволяет быстро восстановить его после сбоев.&lt;br /&gt;В суперблоке определяется размер файловой системы, максимальное число файлов в разделе, объем свободного пространства и содержится информация о том, где искать незанятые участки. При запуске ОС суперблок считывается в память и все изменения файловой системы вначале находят отображение в копии суперблока, находящейся в ОП, и записываются на диск только периодически. Это позволяет повысить производительность системы, так как многие пользователи и процессы постоянно обновляют файлы. С другой стороны, при остановке системы суперблок обязательно должен быть записан на диск, что не позволяет выключать компьютер простым выключением питания. В противном случае, при следующей загрузке информация, записанная в суперблоке, окажется не соответствующей реальному состоянию файловой системы.&lt;br /&gt;&lt;table style=&quot;width: 70%; height: 40px;&quot; align=&quot;center&quot; border=&quot;1&quot; bordercolor=&quot;#b1967a&quot; cellspacing=&quot;0&quot;&gt;&lt;tr align=&quot;center&quot;&gt;&lt;td&gt;Загрузочный сектор&lt;/td&gt;  &lt;td&gt;Суперблок&lt;/td&gt;  &lt;td&gt;Группа блоков&lt;/td&gt;  &lt;td&gt;Группа блоков&lt;/td&gt;  &lt;td&gt;* * *&lt;/td&gt;  &lt;td&gt;Группа блоков&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;i&gt;Структура файловой системы&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style=&quot;width=70%; height: 40px;&quot; align=&quot;center&quot; border=&quot;1&quot; bordercolor=&quot;#b1967a&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr align=&quot;center&quot;&gt;&lt;td&gt;Копия суперблока&lt;/td&gt; &lt;td&gt;Описание группы блоков&lt;/td&gt;  &lt;td&gt;Карта блоков&lt;/td&gt;  &lt;td&gt;Карта inode&lt;/td&gt;  &lt;td&gt;Таблица inode&lt;/td&gt;  &lt;td&gt;Блоки данных&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;i&gt;Структура &quot;Группы блоков&quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;После суперблока следует описание (дескриптор) группы блоков. Хранящаяся в нем информация позволяет найти битовые карты блоков и индексных дескрипторов, а также таблицу индексных дескрипторов.&lt;br /&gt;Битовой картой блоков (block bitmap) называется структура, каждый бит которой показывает, отведен ли такой же по счету блок какому-либо файлу. Значение 1 показывает, что блок занят. Эта карта служит для поиска свободных блоков в тех случаях, когда надо выделить место под файл.&lt;br /&gt;Битовая карта индексных дескрипторов выполняет аналогичную функцию по отношению к таблице индексных дескрипторов: показывает, какие именно дескрипторы заняты.&lt;br /&gt;Каждому файлу соответствует один и только один индексный дескриптор (inode, i-узел, информационный узел), который идентифицируется своим порядковым номером — индексом файла. В индексном дескрипторе хранятся метаданные файла. Среди них — все атрибуты файла, кроме его имени, и указатель на данные файла.&lt;br /&gt;Для обычного файла или каталога этот указатель представляет собой массив из 15 адресов блоков. Первые 12 адресов в этом массиве являются прямыми ссылками на номера блоков, в которых хранятся данные файла. Если данные не помещаются в 12 блоков, то включается механизм косвенной адресации. Следующий адрес в этом массиве является косвенной ссылкой, то есть адресом блока, в котором хранится список адресов следующих блоков с данными из этого файла.&lt;br /&gt;Сколько блоков с данными можно так адресовать? Адрес блока занимает 4 байта, блок, как уже сказано, — 1, 2 или 4 килобайта. Значит, путем косвенной адресации можно разместить 256 — 1024 блока. Размер файла, занимающего столько блоков, считайте сами.&lt;br /&gt;А если файл еще длиннее? Следующий адрес в массиве-указателе указывает на блок двойной косвенной адресации (double indirect block). Этот блок содержит список адресов блоков, которые, в свою очередь, содержат списки адресов следующих блоков данных.&lt;br /&gt;И, наконец, последний адрес в массиве-указателе задает адрес блока тройной косвенной адресации, то есть блока со списком адресов блоков, которые являются блоками двойной косвенной адресации.&lt;br /&gt;Пока остается непонятным, где находится имя файла, если его нет ни среди данных файла, ни среди его метаданных. В UNIX-подобных системах имя файла есть атрибут не самого файла, а файловой системы, понимаемой как логическая структура каталогов. Имя файла хранится только в каталоге, к которому файл приписан, и больше нигде. Из этого вытекают любопытные следствия.&lt;br /&gt;Во-первых, одному индексному дескриптору может соответствовать любое количество имен, приписанных к разным каталогам, и все они являются настоящими. Количество имен (жестких ссылок) учитывается в индексном дескрипторе. Именно это количество вы можете увидеть по команде ls -l.&lt;br /&gt;Во-вторых, удаление файла означает просто удаление записи о нем из данных каталога и уменьшение на 1 счетчика ссылок.&lt;br /&gt;В-третьих, сопоставить имя можно только номеру индексного дескриптора внутри одной и той же файловой системы, именно поэтому нельзя создать жесткую ссылку в другую&lt;br /&gt;файловую систему (символическую — можно, у нее другой механизм хранения).&lt;br /&gt;Сам каталог таким же образом приписан к своему родительскому каталогу. Корневой каталог всегда записан в индексный дескриптор с номером 2 (номер 1 отведен&lt;br /&gt;для списка адресов дефектных блоков). В каждом каталоге хранится ссылка на него самого и на его родительский каталог — это и есть псевдоподкаталоги «.» и «..».&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Строение каталога в ext2fs&lt;/i&gt;&lt;br /&gt;&lt;table style=&quot;width: 50%; height: 556px;&quot; align=&quot;center&quot; border=&quot;1&quot; bordercolor=&quot;#130f0b&quot; cellspacing=&quot;0&quot;&gt;  &lt;tbody&gt;&lt;tr align=&quot;center&quot;&gt;&lt;td&gt;Номер inode&lt;/td&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td&gt;Длина записи&lt;/td&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td&gt;Длина имени файла&lt;/td&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td height=&quot;40&quot;&gt;Имя файла&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td&gt;Номер inode&lt;/td&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;&lt;td&gt;Длина записи&lt;/td&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td&gt;Длина имени файла&lt;/td&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td&gt;Имя файла&lt;/td&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td&gt;Номер inode&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td&gt;Длина записи&lt;/td&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td&gt;Длина имени файла&lt;/td&gt;&lt;/tr&gt;&lt;tr align=&quot;center&quot;&gt;  &lt;td height=&quot;80&quot;&gt;Имя файла&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Таким образом, количество ссылок на каталог равно количеству его подкаталогов плюс два. Данные каталога представляют собой связный список с записями пере-&lt;br /&gt;менной длины и выглядят примерно так, как на рис. 2.&lt;br /&gt;А как же файлы физических устройств? Они могут находиться в тех же каталогах, что и обычные файлы: в каталоге нет никаких данных, говорящих о принадлежности имени файлу на диске или устройству. Разница находится на уровне индексного дескриптора. Если i-узел обычного файла указывает на дисковые блоки, где хранятся его данные, то в i-узле файла устройства содержится указатель на список драйверов устройств в ядре — тот элемент списка, который соответствует старшему номеру устройства.&lt;br /&gt;&lt;br /&gt;Свойства файловой системы ext2fs:&lt;br /&gt;&lt;br /&gt;• Максимальный размер файловой системы — 4 Тбайт.&lt;br /&gt;• Максимальный размер файла — 2 Гбайт.&lt;br /&gt;• Максимальная длина имени файла — 255 символов.&lt;br /&gt;• Минимальный размер блока — 1024 байт.&lt;br /&gt;• Количество выделяемых индексных дескрипторов — 1 на 4096 байт раздела.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Журналируемые файловые системы&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Представим такую ситуацию. У вас есть жесткий диск, скажем, на 80 Гб. Вы поленились разбить его на разделы, и у вас есть один большой раздел, занимающий все ваши 80 Гб. И вот в момент записи на диск произошло отключение питания. Хорошо, если это случилось во время записи данных какого-то файла, пусть и очень важного: файл можно восстановить хотя бы частично. А вот если свет погас, когда операционная система записывала метаданные, то расположение файла на диске перестанет соответствовать&lt;br /&gt;списку принадлежащих ему блоков в индексном дескрипторе. Файловая система может утратить целостность, то есть такое состояние, когда каждый блок принадлежит не более чем одному файлу (inode). В результате вы можете не досчитаться не одного, а сотни файлов.&lt;br /&gt;Признаком потери целостности служит бит чистого размонтирования (clean bit), точнее, его отсутствие. Этот бит сбрасывается при подключении (монтировании) файловой системы в знак того, что файловая система сейчас используется. После успешного размонтирования файловой системы этот бит устанавливается снова.&lt;br /&gt;Если при монтировании файловой системы в процессе загрузки операционная система обнаруживает, что чистый бит не установлен, она запускает средство проверки файловой системы — программу fsck. Представляете, сколько времени займет такая проверка? Даже при условии, что ошибок будет мало или вообще не будет, придется ждать довольно долго. А если еще будет нарушена целостность, тогда восстановление этой целостности займет еще несколько минут вашего времени.&lt;br /&gt;Все это справедливо для обычной файловой системы. Журналируемая же файловая система перед тем, как что-то сделать с файлами, записывает на диск некое описание планируемой операции и вычеркивает каждый пункт плана только после того, как он успешно выполнен. Тогда после сбоя можно будет не проверять на целостность весь огромный раздел, а только просмотреть журнал и откатить незаконченные операции.&lt;br /&gt;Имейте в виду, что целью журналирования является обеспечение целостности файловой системы, а не сохранность пользовательских данных как таковых.&lt;br /&gt;Журналировать операции записи самих данных тоже можно: в этом случае есть вероятность, что данные после сбоя будут восстановлены. Правда, согласно золотому правилу механики, за все нужно платить, и платить приходится быстродействием.&lt;br /&gt;Решают вопрос разными ухищрениями: например, запись происходит в момент наименьшей активности, некоторые журналируемые файловые системы позволяют разместить журнал на другом физическом диске. Да и фактически время работы с журналом намного меньше, чем работа непосредственно с данными. И, естественно, некоторый полезный объем теперь приходится отводить под сам журнал, но его размеры обычно не превышают 32 Мбайт, что по нынешним временам не так уж и много.&lt;br /&gt;И все же лучшим средством от неожиданного отключения до сих пор являются источники бесперебойного питания...&lt;br /&gt;Современные версии ядра Linux (2.6.x) поддерживают в качестве родных четыре журналируемые файловые системы: ReiserFS, ext3fs, XFS и JFS.&lt;br /&gt;Из них журналирование данных поддерживает только ext3fs. Список файловых систем, которые поддерживаются вашим ядром, содержится в файле /proc/filesystems.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ReiserFS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Разработана Хансом Райзером (Hans Reiser) и его компанией &lt;a href=&quot;http://www.namesys.com/&quot;&gt;Namesys&lt;/a&gt; и официально включена в ядро 2.4.4.&lt;br /&gt;Преимущества данной ФС в основном проявляются в работе с мелкими файлами: они целиком хранятся в своих i-узлах (inode), без выделения блоков в области данных. Вместе с экономией места это способствует и росту производительности, так как данные и метаданные хранятся в непосредственной близости и могут быть считаны одной операцией&lt;br /&gt;ввода/вывода.&lt;br /&gt;Другая особенность ReiserFS состоит в том, что хвосты файлов длиной меньше чем в один блок могут быть упакованы в один дисковый блок (режим тайлинга). Это обеспечивает около 5% экономии дискового пространства. Именно работа с маленькими файлами (меньше килобайта) и обслуживание большого их количества выделяет данную ФС среди прочих.&lt;br /&gt;ReiserFS несовместима с ext2fs на уровне утилит обслуживания файловой системы, однако соответствующий инструментарий, объединенный в пакет reiserfsprogs, уже давно включается в стандартную поставку современных дистрибутивов.&lt;br /&gt;К сожалению, загрузчики Linux (LILO и GRUB) не способны загрузить ядро Linux с раздела ReiserFS, оптимизированного в режиме тайлинга.&lt;br /&gt;Поэтому под каталог /boot лучше отводить отдельный раздел с файловой системой, совместимой с ext2fs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;XFS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;При работе с огромными (терабайтными) файлами вне конкуренции остается файловая система XFS, разработанная компанией Silicon Graphics (сейчас SGI) специально для операций с мультимедийными данными и впервые появившаяся в 1994 г. в версии ОС Irix 5.3. Она использует 64-битную адресацию, что позволяет увеличить максимальный размер файловой системы до 18 тысяч петабайт (при этом предельный размер файла составляет 9 тысяч петабайт).&lt;br /&gt;Особенностью этой файловой системы является устройство журнала: в журнал пишется часть метаданных самой файловой системы таким образом, что весь процесс восстановления после сбоя сводится к копированию этих данных из журнала в файловую систему. Размер журнала задается при создании системы, он должен быть не меньше 32 мегабайт.&lt;br /&gt;XFS эффективно распараллеливает операции ввода-вывода: она делит все пространство раздела на несколько равных областей (allocation group), служащих своего рода автономными файловыми системами в рамках единой XFS.&lt;br /&gt;Пакет утилит обслуживания xfsprogs можно скачать с &lt;a href=&quot;http://oss.sgi.com/projects/xfs/download.html&quot;&gt;тут&lt;/a&gt; (содержит ссылку на российское зеркало).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JFS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Разработана IBM для рабочих станций под управлением ОС AIX, затем портирована для Linux и выпущена по Стандартной Общественной лицензии. Всю необходимую информацию о ней можно найти &lt;a href=&quot;http://www.blogger.com/%20http://jfs.sourceforge.net&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;Размер журнала составляет примерно 40% от размера файловой системы. Эта файловая система может содержать несколько сегментов, содержащих журнал и данные. Такие сегменты называются агрегатами и могут монтироваться отдельно. Умеет она также хранить маленькие файлы и каталоги, содержащие не больше 8 файлов, в пределах индексного дескриптора. Широкого признания пока не получила.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ext3fs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Файловая система ext3fs официально включена в ядро Linux с версии 2.4.16. Впервые она появилась в дистрибутивах RedHat и SuSE. Современные дистрибутивы, основанные на ядре 2.6.x, предлагают установить ext3fs по умолчанию.&lt;br /&gt;Некоторые источники утверждают, что ext3fs — Зто всего лишь «надстройка» над файловой системой ext2fs, а не самостоятельная файловая система. Благодаря такому происхождению ext3fs совместима со всеми программами для обслуживания и настройки файловой системы ext2fs. И перейти на ext3fs можно простым добавлением файла журнала к ext2fs, не только без переформатирования раздела, но даже и без перезагрузки машины. Более того, ОС Linux на старых ядрах, не поддерживающих ext3fs, могут работать с разделами, на которых сформирована эта файловая система, просто подключая их как разделы ext2fs.&lt;br /&gt;Кроме того, ext3fs — самая надежная из рассмотренных файловых систем: в ней предусмотрено журналирование операций не только с метаданными, но и с данными файлов.&lt;br /&gt;Журнал может быть включен в одном из следующих режимов:&lt;br /&gt;&lt;br /&gt;• полного журналирования (journal);&lt;br /&gt;• последовательном (ordered, применяется по умолчанию);&lt;br /&gt;• обратной записи (writeback).&lt;br /&gt;&lt;br /&gt;Режим полного журналирования позволяет минимизировать ваши потери при отключении питания, но является наиболее медленным из всех трех режимов. Этот режим и подразумевает журналирование записи пользовательских данных.&lt;br /&gt;Самый быстрый режим — это «обратная запись». Это обыкновенное журналирование только метаданных.&lt;br /&gt;Режим «последовательный» представляет собой компромисс между скоростью и полнотой. Официально журналируются только метаданные, но блоки соответствующих им данных записываются первыми. В большинстве случаев такой режим гарантирует сохранность данных, особенно если данные дописывались в конец файла, как обычно и бывает.&lt;br /&gt;Какой режим выбрать? Если ваш сервер является файловым (FTP, WWW-сервер), то есть таким, который используется пользователями для хранения файлов, выберите режим полного журналирования — пользователи будут вам благодарны. Пусть в этом режиме сервер будет работать чуть медленнее, зато в случае ЧП можно минимизировать потери информации.&lt;br /&gt;Во всех остальных случаях нужно установить режим «Последовательный», точнее вообще не нужно ничего устанавливать — он используется по умолчанию.&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/7946819761166473813/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/7946819761166473813' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/7946819761166473813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/7946819761166473813'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/blog-post.html' title='Файловая система изнутри.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-9012651437679614895</id><published>2007-07-23T10:56:00.000+03:00</published><updated>2007-07-23T11:01:02.220+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>Интересные статьи по работе в Linux.</title><content type='html'>Программисты IBM радуют нас своими великолепными статьями, раскрывающими различные аспекты по работе в линукс. Вот и на прошлой неделе вышли 3 замечательные статьи...&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;     &lt;br /&gt;&lt;b&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-fedora-livecd/index.html&quot;&gt;Создание Fedora Live CD&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;В декабре 2006 в рамках проекта дистрибутива Fedora Linux был выпущен первый Live CD. Узнайте, как создавать свои собственные простые в использовании Live CD при помощи видоизмененного Pilgrim, средства для создания Fedora Live CD.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-boot-faster/index.html&quot;&gt;Распараллеливание приложений для ускорения загрузки Linux&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Одна из основных претензий к Linux -- это скорость его загрузки. В статье обсуждаются возможности увеличения скорости загрузки Linux, в том числе два варианта распараллеливания процесса инициализации. Кроме этого показано, как представить в графическом виде процесс загрузки.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ru/library/l-bash-test/index.html&quot;&gt;Подсказки по Linux: Функции сравнения и тестирования в Bash&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Вы запутались во множестве способов тестирования и сравнения в Bash shell? Это руководство поможет вам освоиться с различными тестами для файлов, строк и чисел. Вы узнаете, когда и как стоит использовать конструкции с test, [], [[]], (()) или if-then-else.&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/9012651437679614895/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/9012651437679614895' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/9012651437679614895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/9012651437679614895'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/linux.html' title='Интересные статьи по работе в Linux.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-4239624978804887095</id><published>2007-07-23T10:17:00.000+03:00</published><updated>2008-11-13T18:39:49.678+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Krusader"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Программное обеспечение"/><category scheme="http://www.blogger.com/atom/ns#" term="Файловая система"/><title type='text'>Krusader 1.80.0</title><content type='html'>Вышла финальная версия файлового менеджера - Krusader.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRBVeVjOjAkG6cS-bUercJL-XbWbePG9rIyOxyDFvFpWJl54zpZWtkUDlGInpJZVhpU7TFxQcxYmu2cFsD3Xq3pH5m83AGbm_fSzp6Im_KzdCSemKsBy6fUn6Ufagn4oXIbB_0ttoDJW8/s1600-h/kr_tabs.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRBVeVjOjAkG6cS-bUercJL-XbWbePG9rIyOxyDFvFpWJl54zpZWtkUDlGInpJZVhpU7TFxQcxYmu2cFsD3Xq3pH5m83AGbm_fSzp6Im_KzdCSemKsBy6fUn6Ufagn4oXIbB_0ttoDJW8/s320/kr_tabs.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5090289141222988114&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Основные обновления:&lt;br /&gt;• Полная поддержка ACL для просмотра и редактирования&lt;br /&gt;• Серьезно изменен эмулятор терминала, добавлены новые возможности и изменен внешний вид&lt;br /&gt;• Изменена и усовершенствованна система UserAction&lt;br /&gt;• Повышено удобство и простота использования, особенно в Konfigurator и в большей степени, преобразование меню&lt;br /&gt;• Улучшена работа с архивами: упаковка в фоном режиме, поддержка шифрования, многотомные архивы, увеличен уровень сжатия&lt;br /&gt;&lt;br /&gt;Полный список изменений и улучшений находится в ChangeLog.&lt;br /&gt;&lt;br /&gt;Прямые ссылки для скачивания: &lt;a href=&quot;http://prdownloads.sourceforge.net/krusader/krusader-1.80.0.tar.gz?download&quot;&gt;исходники&lt;/a&gt;, &lt;a href=&quot;http://prdownloads.sourceforge.net/krusader/krusader_1.80.0-0feisty0_i386.deb?download&quot;&gt;deb-пакет&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/4239624978804887095/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/4239624978804887095' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/4239624978804887095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/4239624978804887095'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/krusader-1800.html' title='Krusader 1.80.0'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRBVeVjOjAkG6cS-bUercJL-XbWbePG9rIyOxyDFvFpWJl54zpZWtkUDlGInpJZVhpU7TFxQcxYmu2cFsD3Xq3pH5m83AGbm_fSzp6Im_KzdCSemKsBy6fUn6Ufagn4oXIbB_0ttoDJW8/s72-c/kr_tabs.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-7511208919924019978</id><published>2007-07-17T10:44:00.000+03:00</published><updated>2007-07-17T11:10:27.545+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="SSH"/><category scheme="http://www.blogger.com/atom/ns#" term="Удаленный доступ"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>OpenSSH. Часть 6. Назначение разрешений для файлов ssh.</title><content type='html'>Файлам и ключам SSH должны быть назначены правильные и безопасные разрешения доступа.&lt;br /&gt;Ниже приводится список файлов и папок с разрешениями, которые им желательно предоставить.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Для пользовательских учетных записей в каталоге ~/.ssh назначаются следующие разрешения:&lt;br /&gt;&lt;br /&gt;~/.ssh - 700&lt;br /&gt;~/.ssh/id_dsa и другие закрытые ключи - 400&lt;br /&gt;~/.ssh/id_dsa.pub и другие открытые ключи - 644&lt;br /&gt;~/.ssh/ssh_config - 644&lt;br /&gt;~/.ssh/known_hosts - 644&lt;br /&gt;~/.ssh/authorized_hosts - 644&lt;br /&gt;&lt;br /&gt;Разрешения для содержимого каталога /etc/ssh:&lt;br /&gt;&lt;br /&gt;/etc/ssh - 755&lt;br /&gt;/etc/ssh/sshd_config - 644&lt;br /&gt;/etc/ssh/ssh_config - 644&lt;br /&gt;/etc/ssh/ssh_host_dsa_key и другие закрытые ключи - 400&lt;br /&gt;/etc/ssh/ssh_host_dsa_key.pub и другие открытые ключи - 644&lt;br /&gt;/etc/ssh/moduli - 644&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Другие части:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-1.html&quot;&gt;OpenSSH. Часть 1. Введение.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-2.html&quot;&gt;OpenSSH. Часть 2. Настройка.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-3.html&quot;&gt;OpenSSH. Часть 3. Построение новых ключей хостов&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-4.html&quot;&gt;OpenSSH. Часть 4. Использование нескольких пар ключей&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-5.html&quot;&gt;OpenSSH. Часть 5. Вход без пароля.&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/7511208919924019978/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/7511208919924019978' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/7511208919924019978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/7511208919924019978'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/openssh-6-ssh.html' title='OpenSSH. Часть 6. Назначение разрешений для файлов ssh.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-1846902553159979100</id><published>2007-07-13T10:41:00.000+03:00</published><updated>2007-07-13T11:01:20.881+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="SSH"/><category scheme="http://www.blogger.com/atom/ns#" term="Удаленный доступ"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>OpenSSH. Часть 5. Вход без пароля.</title><content type='html'>Вводить пароли утомительно, особенно если они состоят из нескольких слов, но ведь можно использовать OpenSSH для открытия подключений без ввода пароля (но при этом сохранить защиту подключения). Для этого существуют следующие приложения - ssh-agent и keychain. Расмотрим каждую из них.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;b&gt;Использование ssh-agent.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Сперва необходимо настроить открытый и закрытый ключ (об этом я &lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-3.html&quot;&gt;здесь&lt;/a&gt; уже писал), а затем воспользуйтесь &lt;i&gt;ssh-agent&lt;/i&gt;. Эта программа обрабатывает запросы на аутентификацию при подключении к различным системам через SSH. Пароль вводится только один раз, в начале сеанса SSH; после выхода из сеанса его придется вводить заново.&lt;br /&gt;&lt;i&gt;Ssh-agent&lt;/i&gt; не позволит запланировать пересылку данных через SSH из cron. Прежде всего запустите &lt;i&gt;ssh-agent&lt;/i&gt; с указанием используемого командного процессора:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$ ssh-agent bash&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;После появления стандартного приглашения запустите утилиту &lt;i&gt;ssh-add&lt;/i&gt;, которая загружает все ключи из каталога ~/.ssh:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$ ssh-add&lt;br /&gt;Enter passphrase for /home/jenn/.ssh/idrsa:&lt;br /&gt;Identity added: /home/jenn/.ssh/idj-sa (/home/jenn/.ssh/idrsa)&lt;br /&gt;Enter passphrase for /home/jenn/.ssh/apache_key:&lt;br /&gt;Identity added: /home/jenn/.ssh/idrsa (/home/jenn/.ssh/apachekey)&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;В дальнейшем вы сможете войти на любой хост SSH без ввода пароля:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;jenn@windbag:$ ssh powerpc&lt;br /&gt;Linux powerpc 2.4.21 #1 Sun Aug 3 20:15:59 PDT 2003 i686 GNU/Linux&lt;br /&gt;Libranet GNU/Linux&lt;br /&gt;Last Login: Web Feb 7 18:28:20 2004 from windbag.test.net&lt;br /&gt;jennOpowerpc:~$&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Чтобы завершить работу &lt;i&gt;ssh-agent&lt;/i&gt;, просто выйдите из командного процессора &lt;i&gt;ssh-agent&lt;/i&gt;:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$ exit&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Поскольку пароли и ключи ассоциируются с конкретным процессом Bash, при выходе из командного процессора &lt;i&gt;ssh-agent&lt;/i&gt; они пропадают. Если запустить второй командный процессор для запуска другой копии &lt;i&gt;ssh-agent&lt;/i&gt;, пароль придется вводить заново, даже если первый процесс остается активным. Чтобы узнать, какие ключи использует &lt;i&gt;ssh-agent&lt;/i&gt;, введите команду&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$ ssh-add -l&lt;br /&gt;1024 65:91:77:71:24:66:46:ea:cb:00:fe:83:ad:b8:4a:34 /home/jenn/.ssh/id_rsa (RSA)&lt;br /&gt;1024 da:f7:27:6a:37:4e:a5:bb:ld:00:c7:a8:e9:fe:23:d8 /home/jenn/.ssh/apachekey (RSA)&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Чтобы команда сработала, необходимо вернуться к локальному командному процессору &lt;i&gt;ssh-agent&lt;/i&gt; и не быть подключенным к удаленному хосту. При подключении работой терминала управляет удаленный хост, и вы получите сообщение об ошибке «Could not open a connection to your authentication agent». Команда &lt;i&gt;ssh-add&lt;/i&gt; позволяет загружать конкретные ключи:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$ ssh-add /home/jenn/adminkeys/id_rsa_http&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;и удалять ключи из активного сеанса ssh-agent (при этом ключ не удаляется из системы):&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$ ssh-add -d /home/jenn/.ssh/id_dsa&lt;br /&gt;Identity removed: /home/jenn/.ssh/iddsa (/home/jenn/.ssh/idjdsa.pub)&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Следующая команда удаляет все ключи:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$ ssh-add -D&lt;br /&gt;All identities removed.&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Использование keychain.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Программа &lt;i&gt;ssh-agent&lt;/i&gt; неплоха, но пользователю приходится вводить пароль при каждом открытии нового командного процессора. С выходом вся введенная информация теряется. Кроме того, &lt;i&gt;ssh-agent&lt;/i&gt; не позволяет использовать беспарольную пересылку данных SSH с cron.&lt;br /&gt;Чтобы решить эти проблемы можно воспользоваться программой &lt;i&gt;keychain&lt;/i&gt;, которая сохраняет пароли SSH на общесистемном уровне вплоть до перезагрузки. &lt;i&gt;keychain&lt;/i&gt; также работает совместно с cron. Загрузите и установите &lt;i&gt;keychain&lt;/i&gt; из обычных источников в формате RPM, .deb или в виде исходных текстов. Затем отредактируйте локальный файл ~/bash_profile и добавьте следующие строки:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;keychain iddsa&lt;br /&gt;. ~/.keychain/$HOSTNAME-sh&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Укажите фактическое имя закрытого ключа: idjrsa, my_own_groovy_key и т. д. Обратите внимание на начальную точку во второй строке; она приказывает Bash прочитать файл, имя которого указано в этой строке. Вот и все. Теперь после входа на локальную рабочую станцию на экране появится запрос на ввод пароля от &lt;i&gt;keychain&lt;/i&gt;. В дальнейшем &lt;i&gt;keychain&lt;/i&gt; будет обеспечивать аутентификацию вплоть до перезагрузки системы.&lt;br /&gt;В файле можно указать столько ключей, сколько вы собираетесь использовать:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;keychain iddsa apachekey ftpkey&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Для каждого ключа при входе в систему необходимо ввести пароль. Программа keychain будет обеспечивать аутентификацию в течение всего времени работы системы, даже при выходе и повторном входе пользователя в систему. После перезапуска системы пароли придется ввести заново.&lt;br /&gt;&lt;br /&gt;Предыдущие части.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-1.html&quot;&gt;Часть 1. Введение.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-2.html&quot;&gt;Часть 2. Настройка.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-3.html&quot;&gt;Часть 3. Построение новых ключей хостов&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-4.html&quot;&gt;Часть 4. Использование нескольких пар ключей&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/1846902553159979100/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/1846902553159979100' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/1846902553159979100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/1846902553159979100'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/openssh-5.html' title='OpenSSH. Часть 5. Вход без пароля.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-3904875114007924179</id><published>2007-07-11T09:54:00.000+03:00</published><updated>2007-07-11T10:05:01.324+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="SSH"/><category scheme="http://www.blogger.com/atom/ns#" term="Удаленный доступ"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>OpenSSH. Часть 4. Использование нескольких пар ключей.</title><content type='html'>Предположим, Вам требуется сгенерировать отдельные ключи для обращения к разным хостам или разным типам учетных записей. Например, вы хотите, чтобы один ключ SSH применялся для администрирования сервера FTP, а другой — для обращения к вашим личным учетным записям.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Обратимся за помощью к утилите &lt;i&gt;ssh_keygen&lt;/i&gt;, которая позволяет задать парам ключей любые имена по вашему усмотрению. К имени открытого ключа автоматически присоединяется суффикс .pub.&lt;br /&gt;Всегда указывайте пароль!&lt;br /&gt;&lt;i&gt;&lt;br /&gt;akkana@windbag:$ ssh-keygen -t rsa -f /home/akkana/.ssh/ftp_key&lt;br /&gt;Generating public/private rsa key pair.&lt;br /&gt;Enter passphrase (empty for no passphrase):&lt;br /&gt;Enter same passphrase again:&lt;br /&gt;Your identification has been saved in /home/akkana/.ssh/ftp_key.&lt;br /&gt;Your public key has been saved in /home/akkana/.ssh/ftp_key.pub.&lt;br /&gt;The key fingerprint is:&lt;br /&gt;95:d2:12:55:66:ba:ec:a8:5c:40:4b:le:03:2b:6c:ea akkana@windbag&lt;br /&gt;akkana@windbag:~$&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;При создании пары ключей с пользовательскими именами имя закрытого ключа вводится в файле ~/.ssh/ssh_config. Если файл не существует, создайте его и введите строку вида&lt;br /&gt;&lt;i&gt;&lt;br /&gt;IdentityFile ~/.ssh/ftp_key&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;В каталоге &lt;i&gt;/etc/ssh&lt;/i&gt; должна находиться копия стандартного файла &lt;i&gt;ssh_config&lt;/i&gt;. При внесении изменений проще всего добавить новые параметры в конец файла. Файл &lt;i&gt;ssh_config&lt;/i&gt; предназначен для хранения как данных конфигурации конкретного пользователя, так и клиентских настроек общесистемного уровня. Копия файла в домашнем каталоге пользователя задает параметры, относящиеся к конкретному пользователю.&lt;br /&gt;&lt;br /&gt;Предыдущие части:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-1.html&quot;&gt;Часть 1. Введение&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-2.html&quot;&gt;Часть 2. Настройка&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-3.html&quot;&gt;Часть 3. Построение новых ключей хостов&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/3904875114007924179/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/3904875114007924179' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/3904875114007924179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/3904875114007924179'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/openssh-4.html' title='OpenSSH. Часть 4. Использование нескольких пар ключей.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-5453533864720794284</id><published>2007-07-03T11:33:00.000+03:00</published><updated>2007-07-03T11:42:55.844+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Удаленный доступ"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>OpenSSH. Часть 3. Построение новых ключей хостов</title><content type='html'>Предположим, вы заглянули в каталог /etc/ssh, но не нашли там файлов с ключами. Может быть Linux не сгенерировал их при установке OpenSSH, а может быть, вы просто хотите сгенерировать новые ключи самостоятельно.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Сгенерировать новую пару ключей можно с помощью программы ssh-keygen. Программа должна запускаться с правами root и с указанием имени новой пары ключей. Всегда задавайте контрольную фразу (пароль):&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key&lt;br /&gt;Generating public/private rsa key pair.&lt;br /&gt;Enter passphrase (empty for no passphrase):&lt;br /&gt;Enter same passphrase again:&lt;br /&gt;Your identification has been saved in /etc/ssh/ssh_host_rsa_key.&lt;br /&gt;Your public key has been saved in /etc/ssh/sshjiost_rsa_key.pub.&lt;br /&gt;The key fingerprint is:&lt;br /&gt;6c:24:75:54:d3:21:17:c9:11:db:41:dd:95:3f:d0:ac root@windbag&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;В приведенном примере используются имена ключей по умолчанию, но вы можете назвать их как угодно. При использовании других имен не забудьте включить их в файл /etc/ssh/sshd_config:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;HostKey /etc/ssh/ssh_host_rsa_key&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Закомментируйте или удалите записи несуществующих ключей.&lt;br /&gt;&lt;br /&gt;После того как OpenSSH заработает, и открытые ключи будут распространены среди пользователей, не стоит изменять закрытые ключи без особо веских причин, потому что вам придется распространять открытые ключи заново. Если пользователь попытается подключиться со старым открытым ключом, он получит следующее сообщение:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;WARNING: HOST IDENTIFICATION HAS CHANGED! &lt;br /&gt;IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!&lt;br /&gt;...&lt;br /&gt;Are you sure you want to continue connecting? (yes/no)&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Проинструктируйте пользователей, чтобы они всегда отвечали &lt;i&gt;no&lt;/i&gt; и ставили вас в известность о происходящем.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Предыдущие части:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-1.html&quot;&gt;Часть 1. Введение&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-2.html&quot;&gt;Часть 2. Настройка&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/5453533864720794284/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/5453533864720794284' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/5453533864720794284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/5453533864720794284'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/07/openssh-3.html' title='OpenSSH. Часть 3. Построение новых ключей хостов'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-4179787431119486196</id><published>2007-06-26T00:07:00.000+03:00</published><updated>2007-06-26T00:12:47.028+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="SSH"/><category scheme="http://www.blogger.com/atom/ns#" term="Удаленный доступ"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>OpenSSH. Часть 2. Настройка.</title><content type='html'>Вы хотите установить связь между локальной рабочей станцией и удаленным компьютером. Подключение должно быть защищенным; информация не должна стать доступной для злоумышленников (их не видно, но они существуют — даже если вы не страдаете паранойей). Итак, требуется настроить OpenSSH.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Установите OpenSSH на обоих компьютерах. Чтобы удаленный хост принимал подключения, на нем должен работать демон sshd. Скопируйте открытый ключ удаленного хоста в файл ~/.ssh/known_hosts на локальном компьютере — и можете приступать к работе.&lt;br /&gt;Запуск sshd в системах на базе Debian осуществляется следующим образом:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# /etc/init.d/ssh start&lt;br /&gt;# /etc/init.d/ssh stop&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Всегда проверяйте имена файлов init, они могут изменяться в зависимости от дистрибутива. Копирование открытого ключа удаленного хоста в локальный файл ~/.ssh/know_hosts сводится к простой попытке подключения к удаленному хосту.&lt;br /&gt;&lt;i&gt;&lt;br /&gt;carla@windbag carla$ ssh stinkpad&lt;br /&gt;The authenticity of host &#39;stinkpad (192.168.1.100)&#39; can&#39;t be established.&lt;br /&gt;RSA key fingerprint is a2:c6:70:3e:73:00:b3:ed:90:bl:9a:bc:e7:d5:32:ba.&lt;br /&gt;Are you sure you want to continue connecting (yes/no)?&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Ответьте yes, и на экране появится сообщение:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;Warning: Permanently added &#39;stinkpad,192.168.1.100&#39; (RSA) to the l i s t of known hosts.&lt;br /&gt;car1a@stinkpad&#39;s password:&lt;br /&gt;Linux stinkpad 2.4.21 #1 Sun Aug 3 20:15:59 PDT 2003 i686 GNU/Linux&lt;br /&gt;Libranet GNU/Linux&lt;br /&gt;Last Login: Sat June 3 22:16:24 2004 from :0.0&lt;br /&gt;car1a@stinkpad:~$&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Подключившись к удаленному компьютеру, вы сможете работать с ним точно так же, как если бы вы сидели за ним. Чтобы закрыть сеанс удаленного подключения, введите команду exit.&lt;br /&gt;&lt;br /&gt;Простая команда ssh &lt;xocm&gt; создает подключение к другому хосту локальной сети с использованием данных текущей учетной записи. Чтобы подключиться с данными другого пользователя, укажите параметр -I:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;carla@windbag ~$ ssh -l wilmaf stinkpad&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;При подключении SSH по Интернету следует указывать полное доменное имя:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;carla@windbag ~$ ssh stinkpad.test.net&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Установление исходного подключения и копирование ключа RSA с хоста является самой рискованной частью создания SSH. Если злоумышленнику удастся вмешаться в работу сервера имен, он может перехватить сеанс SSH и похитить данные вашей учетной записи. Впрочем, риск относительно невелик, и перед первым подключением можно проверить IP-адрес удаленного хоста. Чтобы закрыть эту брешь в системе безопасности, заранее вручную скопируйте открытый ключ хоста в локальный файл ~/.ssh/known_hosts. При этом файл придется слегка подредактировать; далее приводятся примеры.&lt;br /&gt;Ключи хостов хранятся в каталоге /etc/ssh и используются для проверки «личности» удаленного хоста. Для подключения пользователю потребуется только копия открытого ключа в его файле ~/.ssh/known_hosts и учетная запись, под которой осуществляется вход в систему. В некоторых дистрибутивах Linux при установке OpenSSH создаются две пары ключей, RSA и DSA:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$ ls /etc/ssh&lt;br /&gt;ssh_host_dsa_key&lt;br /&gt;ssh_host_dsa_key.pub&lt;br /&gt;ssh_host_rsa_key&lt;br /&gt;ssh_host_rsa_key.pub&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Открытый ключ RSA выглядит примерно так:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;$ cat ssh_host_rsa_key.pub&lt;br /&gt;ssh-rsa&lt;br /&gt;AAAAB3NzaClyc2EAAAABIwAAAIEA5pSqNmtqRzK2JaLr8qkIQ41nBDLI2JRJ6&lt;br /&gt;gRBmwg9gwK3S8xXnMUHIsu8wh5Sloei8hs47x2I9cpNpxHfjlwQWwqP61Vyel&lt;br /&gt;DfD+y+WIz0UgzUXN5IrqYZ70EdQ4Xn++J1lkmFG6L16KySb0700XonlC09rNx&lt;br /&gt;isHL5GC0qil+qM= rootPwindbag&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Сам ключ должен быть одной длинной, неразрывной строкой — он не должен содержать внутренних разрывов. Скопируйте его на съемный диск, перенесите в локальный файл ~/.ssh/known_hosts и измените следующим образом:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;windbag.test.net,192.168.1.6 ssh-rsa&lt;br /&gt;AAAAB3NzaClyc2EAAAABIwAMIEA5pSqNmtqRzK2JaLr8qkIQ41nBDLI2JRJ6g&lt;br /&gt;RBmwg9gwK3S8xXnMUHIsu8wh5Sloei8hs47x2I9cpNpxHfjlwQWwqP61VyelD&lt;br /&gt;fD+y+WIz0UgzUXN5IrqYZ70EdQ4Xn++J1lkmFG6Ll6KySb0700XonlC09rNxi&lt;br /&gt;sHL5GC0qil+qM=&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Имя хоста и IP-адрес добавляются в начало строки, а завершающее имя хоста удаляется. Открытые ключи доступны для всех, но закрытые ключи должны читаться толь-&lt;br /&gt;ко владельцем ключа.&lt;br /&gt;&lt;/xocm&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/4179787431119486196/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/4179787431119486196' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/4179787431119486196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/4179787431119486196'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/06/openssh-2.html' title='OpenSSH. Часть 2. Настройка.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-4559841083555718822</id><published>2007-06-26T00:02:00.000+03:00</published><updated>2007-06-26T00:07:11.187+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="SSH"/><category scheme="http://www.blogger.com/atom/ns#" term="Удаленный доступ"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>OpenSSH. Часть 1. Введение.</title><content type='html'>&lt;b&gt;Часть 1. ВВЕДЕНИЕ.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Удаленный доступ по праву считается одной из самых замечательных возможностей Linux. Существует много способов организации удаленного доступа. В незащищенных сетях не следует полагаться на старые механизмы telnet или X, поскольку информация учетной записи и данные пересылаются в виде простого текста. Оптимальным выбором станет OpenSSH (Secure SHell) — семейство из нескольких программ защищенной пересылки данных: scp (Secure CoPy), ssh (Secure SHell) и sftp (Secure File Transfer Protocol).&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Программа ssh является основным инструментом удаленного администрирования; с ее помощью можно подключиться к удаленному компьютеру и работать с ним так, словно вы физически работаете за этим компьютером. Информация учетных записей и данные шифруются. Кроме того, ssh обнаруживает модификацию пакетов во время пересылки. Злоумышленники могут сколько угодно перехватывать пакеты и вносить в них изменения — они этим ничего не добьются. В действительности SSH не является командным процессором (shell); это протокол. Существует две несовместимые версии этого протокола, SSH-1 и SSH-2. OpenSSH поддерживает обе версии.&lt;br /&gt;&lt;blockquote&gt;ПРИМЕЧАНИЕ&lt;br /&gt;Терминология SSH может сбить с толку непосвященных. SSH (прописными буквами) — название протокола, тогда как ssh, scp и т. д. (строчными буквами) — программы, использующие SSH. OpenSSH — реализация SSH.&lt;br /&gt;&lt;/blockquote&gt;Работать с SSH несложно. Если ранее вам доводилось пользоваться rsh, rlogin или rep, синтаксис командной строки почти не изменился. На всех компьютерах, к которым должен предоставляться удаленный доступ, должен работать демон OpenSSH sshd, а на всех удаленных компьютерах потребуются учетные записи. Входить можно под любой учетной записью; главное, чтобы вы знали имя и пароль.&lt;br /&gt;OpenSSH проводит аутентификацию с использованием пар из открытого и закрытого ключа. Закрытые ключи тщательно охраняются и никогда, ни при каких условиях не передаются другим пользователям. Всегда используйте сильные пароли для шифрования и защиты закрытых ключей. По-настоящему сильный пароль состоит из нескольких слов и содержит буквы и цифры типа «t4is is mai 733ts3kkrit p4ssphr4se». Как обычно, следует выдерживать баланс между надежностью и удобством, потому что пароль придется часто вводить.&lt;br /&gt;Открытые ключи передаются удаленным клиентам и серверам SSH. Например, при использовании аутентификации с ключом хоста открытый ключ сервера хранится на клиентских компьютерах, которым разрешен доступ к серверу. Все сеансы SSH начинаются с аутентификации. После того как открытый ключ удаленного хоста будет скопирован в локальный каталог ~/.ssh, вы сможете подключиться к удаленному хосту в качестве любого пользователя, используя данные его учетной записи.&lt;br /&gt;Если вы хотите, чтобы при аутентификации использовались ключи SSH (вместо учетных данных пользователя), сгенерируйте собственную пару из открытого и закрытого ключа и скопируйте открытый ключ на все удаленные хосты, к которым вы собираетесь подключаться. Чтобы схема заработала, достаточно выполнить пару дополнительных шагов, описанных в этой главе. Такой вид аутентификации называется аутентификацией с открытым ключом.&lt;br /&gt;Если вы собираетесь подключаться к многим удаленным компьютерам, управление входными данными начинает создавать проблемы. Использование одного и того же открытого ключа и пароля создает потенциальную угрозу для безопасности системы, но и запомнить слишком много имен и паролей тоже нелегко. OpenSSH решает эту проблему за счет использования аутентификации с открытым ключом, программ ssh-agent и keychain, позволяющих проводить защищенную аутентификацию без пароля.&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/4559841083555718822/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/4559841083555718822' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/4559841083555718822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/4559841083555718822'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/06/openssh-1.html' title='OpenSSH. Часть 1. Введение.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-3458706538903785357</id><published>2007-06-19T11:40:00.000+03:00</published><updated>2007-06-19T11:48:33.874+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Управление пользователями"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>Управление пользователями и группами. Часть 7.Создание и удаление групп командами groupadd и groupdel.</title><content type='html'>Требуется создать новую пользовательскую или системную группу. Все устанавливаемые программы-серверы должны иметь свои учетные записи пользователей и групп. Также требуется удалить группу или группы, но при этом проследить за тем, чтобы в системе не осталось «бесхозных» файлов или пользователей.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;b&gt;Создание групп.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Воспользуйтесь командой groupadd. Команда создает новую группу по системным значениям, настроенным в /etc/default/useradd и /etc/skeL/:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# groupadd newgroup&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Системная группа создается с ключом -r:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# groupadd -r newgroup&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Ключ -r является специфическим для Red Hat. Если в вашей версии groupadd  он не поддерживается, укажите следующий доступный номер системной группы:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# groupadd -g 127 newgroup&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Следующий доступный номер группы можно узнать из файла /etc/group.&lt;br /&gt;&lt;br /&gt;Рекомендуется использовать логически последовательную схему нумерации групп. С точки зрения Linux это несущественно, но зато такая схема избавит вас от многих  хлопот. В Red Hat номера системных групп лежат в диапазоне 0-499, а в Debian — в диапазоне 100-999.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Удаление групп.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Сначала, если потребуется, переназначьте номера групп редактированием файла /etc/group. Просто скопируйте данные пользователей и вставьте их в другую группу. Затем удалите группу командой groupdel, после чего воспользуйтесь командами find и chgrp для поиска и передачи права владения файлами другой группе.&lt;br /&gt;Удаление группы:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# groupdel имя_группы&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Удаление группы считается хлопотной операцией, потому что не существует утилит для автоматического переноса/удаления файлов или пользователей, входящих в группу. Вам придется самостоятельно найти их и изменить коды GID вручную:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# find / -gid 750&lt;br /&gt;/usr/src/i nclude/lber.h&lt;br /&gt;/usr/src/include/ldap.h&lt;br /&gt;/usr/src/include/ldbm.h&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Изменения можно вносить последовательно:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# chgrp 800 /usr/src/include/lber.h&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;А можно выполнить замену одновременно посредством совместного использования find и chgrp:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# find / -gid 750 -exec chgrp -v 800 {} \ ;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Предыдущие части:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/1.html&quot;&gt;Часть 1. Отделение обычных пользователей от системных.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/2-useradd-adduser.html&quot;&gt;Часть 2. Создание учетной записи командами useradd и adduser.&lt;/a&gt; &lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/2-useradd-adduser.html&quot;&gt;Часть 3. Изменение учетной записи пользователя.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/1.html&quot;&gt;Часть 4. Удаление пользователя.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/5.html&quot;&gt;Часть 5. Простое завершение процессов.&lt;/a&gt; &lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/6.html&quot;&gt;Часть 6. Блокировка учетных записей и управление паролями.&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/3458706538903785357/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/3458706538903785357' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/3458706538903785357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/3458706538903785357'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/06/7-groupadd-groupdel.html' title='&lt;b class=&quot;colortitle&quot;&gt;Управление пользователями и группами. Часть 7.&lt;/b&gt;&lt;br/&gt;Создание и удаление групп командами groupadd и groupdel.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-647822164763167208</id><published>2007-06-17T09:44:00.000+03:00</published><updated>2007-08-22T12:20:53.640+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Содержание"/><title type='text'>Содержание...</title><content type='html'>Представляю Вашему вниманию содержание статей, разбитое по темам. Тут приводятся прямы ссылки на статьи, которые по моему мнению наиболее интересны. Содержание будет постоянно пополняться и не будет включать в себя различные анонсы новостей и иже с ними, в только статьи по теме. Надеюсь, что это поможет.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Управление пользователями и группами.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/1.html&quot;&gt;Часть 1. Отделение обычных пользователей от системных.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/2-useradd-adduser.html&quot;&gt;Часть 2. Создание учетной записи командами useradd и adduser.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/2-useradd-adduser.html&quot;&gt;Часть 3. Изменение учетной записи пользователя.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/1.html&quot;&gt;Часть 4. Удаление пользователя.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/5.html&quot;&gt;Часть 5. Простое завершение процессов.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/6.html&quot;&gt;Часть 6. Блокировка учетных записей и управление паролями.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/7-groupadd-groupdel.html&quot;&gt;Часть 7. Создание и удаление групп командами groupadd и groupdel.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Файловая система&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/blog-post_15.html&quot;&gt;Копирование, перемещение и переименование файлов и каталогов.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/mount-fstab.html&quot;&gt;Определение имен устройств для mount и fstab.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/chown.html&quot;&gt;Назначение владельца файла командой chown.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/chmod_10.html&quot;&gt;CHMOD. Настройка разрешений в символьном формате.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/chmod_09.html&quot;&gt;CHMOD. Выполнение массовых операций.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/chmod.html&quot;&gt;CHMOD. Настройка разрешений.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Управление пакетами.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/apt-get-debian.html&quot;&gt;APT-GET. Варианты использования в системе на базе Debian.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Удаленный доступ.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-1.html&quot;&gt;OpenSSH. Часть 1. Введение.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/openssh-2.html&quot;&gt;OpenSSH. Часть 2. Настройка.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-3.html&quot;&gt;OpenSSH. Часть 3. Построение новых ключей хостов&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-4.html&quot;&gt;OpenSSH. Часть 4. Использование нескольких пар ключей&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-5.html&quot;&gt;OpenSSH. Часть 5. Вход без пароля.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/openssh-6-ssh.html&quot;&gt;OpenSSH. Часть 6. Назначение разрешений для файлов ssh.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Работа в терминале.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-1.html&quot;&gt;BASH. Часть 1. Введение.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/07/bash-2.html&quot;&gt;BASH. Часть 2. Специальные символы.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-3.html&quot;&gt;BASH. Часть 3. Выполнение команд.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-4.html&quot;&gt;BASH. Часть 4. Стандартный ввод/вывод.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-5.html&quot;&gt;BASH. Часть 5. Параметры и переменные. Окружение оболочки.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/08/bash-6.html&quot;&gt;BASH. Часть 6. Раскрытие выражений&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Немного смешного и прикольного.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/windows-linux.html&quot;&gt;Научное сравнение Windows и Linux. :)&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/blog-post_11.html&quot;&gt;А правильно ли мы ругаемся.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/blog-post_16.html&quot;&gt;Много ли у вас виртуальных друзей. Типа шутка.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/blog-post_19.html&quot;&gt;Энциклопедия компьютерной нечисти.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/blog-post_31.html&quot;&gt;Учебник по сетевых технологиям. Я под стулом. :)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Не в тему, но тоже интересно.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/ftp-server.html&quot;&gt;Вот, FTP-server себе поставил...&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/ufo-linux.html&quot;&gt;Новое UFO для Linux.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/blog-post_14.html&quot;&gt;Это что-то. Мышь. Медная.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/blog-post_09.html&quot;&gt;В Интернете открыт научный проект &quot;Энциклопедия жизни&quot;.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/blog-post_08.html&quot;&gt;Военно-полевой мобильник.&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/647822164763167208/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/647822164763167208' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/647822164763167208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/647822164763167208'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/06/blog-post_17.html' title='Содержание...'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5591484190086716210.post-6653699007901701223</id><published>2007-06-16T23:49:00.000+03:00</published><updated>2007-06-17T00:01:53.323+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Управление пользователями"/><category scheme="http://www.blogger.com/atom/ns#" term="документация"/><title type='text'>Управление пользователями и группами. Часть 6.Блокировка учетных записей и управление паролями.</title><content type='html'>Требуется заблокировать учетную запись и временно запретить пользователю вход в систему, но без удаления учетной записи.&lt;br /&gt;Также требуется сбросить пароль, установить срок его действия или ограничить количество неудачных попыток входа. Сброс решает вечную проблему забытого пароля. Многие администраторы Linux считают, что срок действия пароля нужно ограничивать, поскольку это заставляет пользователей периодически менять пароль.&lt;br /&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Решение&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Сперва немного о блокировке учетных записей. Чтобы временно деактивировать учетную запись, заблокируйте пароль пользователя ключом -l (lock):&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# passwd -l ivanov&lt;br /&gt;Password changed.&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Следующая команда снимает блокировку с учетной записи:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# passwd -u ivanov&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Еще один способ заблокировать учетную запись — вставить восклицательный знак в начало поля пароля в файле /etc/shadow:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;foobar:!$l$wiD1Qr34$mitGZA76MSYCY04AHIYl:12466:0:99999:7:: :&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Также можно заменить х в поле пароля в файле /etc/passwd звездочкой (*):&lt;br /&gt;&lt;i&gt;&lt;br /&gt;foober:*:1025:1025:Foober Smith..,:/home/foober:/bin/bash&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Наконец, можно лишить пользователя доступа к командному процессору:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# usermod -s /bin/false foober&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;И все же лучше всего придерживаться варианта с passwd -l и -u.&lt;br /&gt;&lt;br /&gt;А теперь про управление паролями.&lt;br /&gt;&lt;br /&gt;Операции назначения и настройки паролей осуществляются командой passwd.&lt;br /&gt;Сброс или изменение пароля:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# passwd ivanov&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Пользователь также может сменить свой пароль:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;ivanov@server04:-$ passwd&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Следующая команда ограничивает срок действия пароля aborg шестью месяцами, с выдачей предупреждения за пять дней:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# passwd -х 180 -w 5 -i l ivanov&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Чтобы просмотреть пароли пользователя, воспользуйтесь командой&lt;br /&gt;&lt;i&gt;&lt;br /&gt;# passwd -S option&lt;br /&gt;ivanov P 02/18/2004 0 10 5 1&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Пароль может содержать цифры, буквы и знаки препинания, при этом они чувствительны к регистру символов. Пробелы и функциональные клавиши не допускаются. Рекомендуется использовать сильные пароли, то есть не выбирать в качестве пароля имена, слова из словаря, дни рождения или адреса. Пароли рекомендуется записывать и хранить в надежном месте. К сожалению, многие пользователи выбирают слабые, легко угадываемые пароли или хранят их в небезопасных местах (например, на записке, прикрепленной к монитору).&lt;br /&gt;Пароли Linux не восстанавливаются. При потере пароля следует обратиться к суперпользователю для получения нового пароля. Или конечно к себе, если Вы сами себе суперпользователь. :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Предыдущие части:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/1.html&quot;&gt;Часть 1. Отделение обычных пользователей от системных.&lt;/a&gt; &lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/2-useradd-adduser.html&quot;&gt;Часть 2. Создание учетной записи командами useradd и adduser.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/2-useradd-adduser.html&quot;&gt;Часть 3. Изменение учетной записи пользователя.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/05/1.html&quot;&gt;Часть 4. Удаление пользователя.&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://tlanvar.blogspot.com/2007/06/5.html&quot;&gt;Часть 5. Простое завершение процессов.&lt;/a&gt; &lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tlanvar.blogspot.com/feeds/6653699007901701223/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/5591484190086716210/6653699007901701223' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/6653699007901701223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5591484190086716210/posts/default/6653699007901701223'/><link rel='alternate' type='text/html' href='http://tlanvar.blogspot.com/2007/06/6.html' title='&lt;b class=&quot;colortitle&quot;&gt;Управление пользователями и группами. Часть 6.&lt;/b&gt;&lt;br/&gt;Блокировка учетных записей и управление паролями.'/><author><name>banderlog</name><uri>http://www.blogger.com/profile/02876478125079731464</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>