shell — что это?

Shell — (пер.- скорлупа, раковина) командный язык высокого уровня, используемый как стандартный интерпретатор в Unix. Cовместим c Bash. Язык программирования Shell предоставляет возможности от управления сервером, при помощи простых shell-команд, до написания сложных shell-сценариев. Множество из операций языка Shell выполняются вызовом внешних программ, что и отличает этот язык программирования от других. При входе в Unix систему Вы видите приглашение в виде значка $ — это и есть приглашение на ввод команд от автоматически запущенной Shell оболочки. Shell не является единственным интепретатором, который необходимо использовать, но он cтандартизирован.

Итак, вы вошли в систему и видите значек запроса ввода:

$  (конечно он может выглядеть  и иначе, например #)

Вспоминаем, что в Unix ОС все дерево каталогов (подкаталогов) берет путь из самого главного каталога /  (то есть слэш — это и есть корневой каталог в системе)
$cd /home
— команда перехода в каталог, после запуска этой команды мы переходим в папку «home» которая находится в каталоге «/»

. (точка) — это обозначение текущего каталого, а ..  (две точки) — обозначение предыдущего каталога.

Дерево каталогов разделяется слЭшем, например, каталог «test», который находится в «home», а он в свою очередь в «/».
Полный путь к папке «test» будет выглядеть так:

/home/test

Независимо от того, в каком каталоге системы мы находимся, перейти в /home/test можно просто набрав следующее:
$cd /home/test    (перейти в папку)
будьте внимательны, если набрать просто, без слэша:
$cd home/test
— Вы перейдете в каталог home, который находится в текущем Вашем каталоге, а не в корневом.
(ну или получите сообщения что такого не существует в папке, где вы находитесь)

Чтобы перейти в предыдущий каталог, нужно просто набрать:
$cd ..
— таким образом мы попадаем, например, с /home/test в /home
$pwd
— эта команда выведет полный путь к директории, где вы находитесь,
например если находитесь в /home/test, то она и выведет одну строку:

/home/test

$ls
— выводит список содержимого каталога, в котором Вы находитесь.
$ls -l
— выведет список содержимого текущей папки с владельцем и правами на файлы и папки.
$ls -la
— делает то же самое, но еще выводит и названия, которые начинаются с точки (например «.» «..» «.conf» и т.п.)

Итак, коротко, что же такое владелец и разрешения(или права)?

У каждого файла или папки есть владелец, это имя пользователя, который создал этот файл или папку или же которого ей присвоили (например, с помощью команды chown).
Например, если вы логинитесь в систему под суперпользователем (root), то созданый вами файл будет иметь владельца root. А если вы логинитесь из-под юзера unknown, то файл будет иметь владельца unknown.
Также, у каждого файла или папки есть права (или разрешения), которые определяют, кто может читать файл, кто запускать, кто записывать в файл,  (или же права на доступ к папке и ее содержимому)
а у кого вообще нет доступа. Права на файл или папку может выставить только их владелец или же суперпользователь root.
Если мы в пустой папке запустим комманду ls -la , то увидим примерно следующее:

drwxr-xr-x  25 root root   4096 Jan 26 11:16 ./
drwxr-xr-x  25 root root   4096 Jan 26 11:16 ../

d   — указывает что это каталог, если это файл то на первом месте стоит — (дефис)
rwx — показывает, что владелец папки имеет разрешение на r-чтение, w-запись, х-запуск файла
r-x — что все, кто находится в групе файла, могут  читать и запускать, но не могут изменять сожержимое.
r-x — означает, что все остальные пользователи не могут изменять, но могут читать и запускать.

Для изменения прав на файл используем следующую комманду:

chmod 755 <имя файла>

755 — первая цифра 7 устанавливает права для владельца файла, вторая 5 — для группы и третья 5 — для всех остальных пользователей. Если перевести 7 в двоичную систему то получим 111 число, каждая единичка это чтение, запись, и запуск. Если мы хотим запретить изменение(запись) файла, то вторую единичку меняем на 0 и того получаем 101. Дальше, переводим 101 в десятичную систему и получаем цифру 5. Итак, когда мы хотим группе и владельцу разрешить все (запись, чтение и запуск 111) а всем остальным закрыть доступ, тогда ставим права 770, что соответствует 111 111 000, а если хотим всем разрешить только чтение — 444 (-> 100 100 100)

Напротив файла мы видим, что имя пользователя прописано два раза — root root:

drwxr-xr-x  25 root root   4096 Jan 26 11:16 ./

Первый — это имя владельца, а второй раз — это имя групы файла, и они не всегда совпадают.
Например, когда Вы хотите нескольким определенным пользователям открыть доступ к файлу. Тогда просто всех добавляете в определенную группу и присваиваете группу файлу с помощью следующей команды:

chgrp new_group <имя файла>
(chgrp apache /etc/httpd/conf/httpd.conf)

Чтобы зменить владельца файла или папки используем следующую комманду:

chown new_owner <имя каталога>

(chown root.root /home) — эта команда сразу же устанавливает и владельца root и групу root для папки home.

6 comments on “shell — что это?

  1. trihooninvimb 18.03.2009 04:21

    Мне понравилось. Столько хорошего материала. Только обновляйтесь почаще 🙂

  2. admin 18.03.2009 15:49

    Спасибо за позитивный отзыв :), исправимся.

  3. volos_86 23.01.2010 01:34

    Что Вы можете сказать о Windows PowerShell http://ru.wikipedia.org/wiki/Windows_PowerShell средство автоматизации от Microsoft для windows server 2008 грубо говоря похожего языка сценариев только для сервера под виндой?
    Стоит ли тратить время на изучения этого комплекса или всё-таки остановится на классическом управлении виндовым серваком (удаленый робочий стол, мышка, постоянные тормоза).

  4. admin 24.01.2010 01:51

    Что сказать, пока еще не пришлось использовать…ну да, это своеобразный аналог shell оболочки, возможно и приглядится он тем, кто привык администрировать в Linux. Но тут вопрос в другом, например в Linux большинство программ поддерживают консольное управление, настройку и вообще без графического интерфейса многие. А вот в Windows как раз наоборот, так что тут еще под вопросом. В любом случае что говорить если с Windows PowerShell еще дела не имел, нужно поставить посмотреть возможности.., а вообще винду админить не люблю и не много опыта в этом нелегком деле…

    Раз уж спрашиваете, так может уже опробовали, поделитесь впечатлениями?

  5. volos_86 24.01.2010 02:27

    нет не пробовал, но изучить возможности PowerShell думаю стоит.
    Кстати поставте Subscribe To Comments что бы все обновления комментариев приходили на почту, а то проверять обновления комментариев каждой странички утомительно.

  6. admin 24.01.2010 16:51

    Спасибо, поставил. Теперь есть возможность подписаться на комментарии 😉

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>