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.
Мне понравилось. Столько хорошего материала. Только обновляйтесь почаще 🙂
Спасибо за позитивный отзыв :), исправимся.
Что Вы можете сказать о Windows PowerShell http://ru.wikipedia.org/wiki/Windows_PowerShell средство автоматизации от Microsoft для windows server 2008 грубо говоря похожего языка сценариев только для сервера под виндой?
Стоит ли тратить время на изучения этого комплекса или всё-таки остановится на классическом управлении виндовым серваком (удаленый робочий стол, мышка, постоянные тормоза).
Что сказать, пока еще не пришлось использовать…ну да, это своеобразный аналог shell оболочки, возможно и приглядится он тем, кто привык администрировать в Linux. Но тут вопрос в другом, например в Linux большинство программ поддерживают консольное управление, настройку и вообще без графического интерфейса многие. А вот в Windows как раз наоборот, так что тут еще под вопросом. В любом случае что говорить если с Windows PowerShell еще дела не имел, нужно поставить посмотреть возможности.., а вообще винду админить не люблю и не много опыта в этом нелегком деле…
Раз уж спрашиваете, так может уже опробовали, поделитесь впечатлениями?
нет не пробовал, но изучить возможности PowerShell думаю стоит.
Кстати поставте Subscribe To Comments что бы все обновления комментариев приходили на почту, а то проверять обновления комментариев каждой странички утомительно.
Спасибо, поставил. Теперь есть возможность подписаться на комментарии 😉