Обучение

Обучение

Life-Hack

Командная строка Linux. Часть 2.

В предыдущей части вводного курса мы познакомились со стандартными коммандами Linux. Теперь, имея навыки прогулки по каталогам, просмотра дирректорий, создания и удаления файлов, настало время узнать больше... А в частности, рассмотрим подробнее права доступа к файлам. О них я упоминал невзначай в первой части, но права доступа, и правильное их распределение - это залог безопасности системы. Поэтому и уделим им особое внимание.

При получении расширенной информации о файлах (ls -l), мы видим, кто имеет доступ на чтение ("r"), запись ("w"), и запуск файла ("x"). Например при структуре вида:

-rw-------


Никто не может никаким образом использовать файл (читать, писать и запускать), кроме его хозяина. При попытке получения доступа к этому файлу будет выведенно сообщение типа "Permission denied". Важно отметить, что каталоги также имеют права доступа. Если у вашего файла свободный доступ всем пользователям, например (-rw-rw-rw), но в это же время он находится в каталоге закрытого типа, который не могут прочесть сторонние пользователи, то и к файлу, соответственно у них доступа не будет.


Также нужно заметить, что флаг "x", то есть право запуска, присутствует только у исполняемых файлов (типа ".exe" в Windows), и различных скриптов. Само собой, что текстовый файл, с повестью о красной шапочке запустить невозможно, и надобность во флаге "x" у него отпадает.


Изменение прав доступа:

Для этих целей служит комманда "chmod". Стоит отметить, что изменять права доступа к файлу может только его владелец. Или root.

Для того, что бы перейти в режим суперпользователя, необходимо набрать комманду

su


От английского Super User. Далее оболочка считает с клавиатуры ваш пароль и вы перейдете в режим рута. Внимание! Остерегайтесь изменять критические файлы конфигурации, настройки в режиме суперпользователя. Помните, что вы с такими привилегиями - просто Бог в своей системе, и если вы соберетесь что-то изменять, или запускать, система будет вас покорно слушаться, подразумевая, что вы и сами знаете, что делаете. Очень часто пользователи (и не только новички) по неосторожности, а порой и глупости, рушат систему намертво, только из-за того, что сидели под рутом, и соответственно выполняли все комманды от его имени. 

Иногда, дело может быть не столько в вашем поведении, сколько в ошибке какого-либо приложения. Но запуск его, от имени root, просто развязывает программе руки, и своим кривым (а иногда просто враждебным) кодом она может нанести существенный урон системе. Это наверняка стоит запомнить.

А теперь вернемся к правам доступа к файлам и каталогам. Как я уже сказал, для этих целей существует комманда "chmod". Обращаясь к мануалу ("man chmod") мы видим описание самой комманды, и ее синтаксиса. Синтаксис имеет такой вид:

chmod {a,u,g,o}{+,-}{r,w,x} <filenames>


Где a - all users, u - владелец, g - группа владельца, o - остальные юзеры. + или - дают комманде знать, хотим мы добавить какие либо права, или отнять их. Например, у нас есть файл "myfile". По умолчанию он имеет следующие права доступа:

-rw-r--r--


То есть все пользователи могут его прочитать, но изменения вносить может лишь владелец файла. Нам нужно сделать так, что бы никто не мог его прочитать, кроме владельца. Соответственно, для этого мы используем такие аргументы:

chmod go-r myfile


Что бы наоборот - дать всем пользователям право на чтение файла, используем комманду

chmod a+r myfile


a - то есть all (все). Или можно просто указать режим (+r), тогда по умолчанию, если мы не обозначили определенные группы пользователей, правила будут действовать на всех. Для особо секретных файлов применим режим:

chmod go-rwx myfile


То есть мы запретили делать что-либо с файлом (даже читать) всем пользователям, кроме его создателя. И на этом рассмотрение разграничение прав доступа мы подведем к концу. На последок хочется сказать, что бы в дальнейшем вы уделяли особое внимание этому вопросу. От него зависит сохранность вашей инфомрации. Про цифровое (более удобное) представление прав доступа вы можете прочитать в соответсвующем мануале. В абзаце, начинающемся со слов "A numeric mode is from one to four octal digits (0-7)".


Процессы:

В линуксе есть аналог виндовой комманды tasklist, и звучит он как "ps". Набрав ее с параметром -e мы можем наблюдать все процессы, которые на данный момент запущены в системе. У каждого процесса есть свой идентификатор, позволяющий управлять им, или, к примеру, убить, за ненадобностью. Убить (завершить) процесс помогает комманда kill. После нее обычно идет PID процесса. Или знак % и ее порядковый номер, что удобнее.

Для того, что бы завершить какой-либо процесс, нам следует обладать достаточными правами доступа. Например, процесс, запущенный другим пользователем, мы завершить (а бывает что и посмотреть), как правило не можем.

Представим, что мы запустили программу, которая будет выполнятся довольно долго, и при этом ход выполнения нас не интересует, а важен результат. Что бы не сидеть и не ждать, тупо пялясь в экран, существует комманда "bg", которая перенесет программу в фоновый режим, и немного уменьшит ее приоритет, что бы дать возможность другим программам занимать большее процессорное время.

Для начала, вернемся в консоль, используя комбинацию клавиш Ctrl+Z. Нам выведется сообщение, что работа приложения приостановленна. Но программа не завершилась! И это главное... Чтобы возобновить работу программы на переднем плане, используйте комманду "fg". А для того, что бы продолжить работу на заднем плане, как раз и служит комманда "bg".


Пользователи:

Система Linux, как вполне удачный клон Unix позволяет работать с несколькими пользователями одновременно. Причем как с реальными, так и с виртуальными. Например веб-сервер, установленный на машине, вполне нормально работает от своего имени. У него есть свои права и свои привелегии.

О каждом пользователе система хранит следующую информацию: Username - идентификатор юзера. UID - его идентификатор. Group - группа, к которой он принадлежит. Shell - оболчка, которая будет дефолтовой для данного юзера. Full name - полное имя. Password - конечно, как же без него. Home directory - домашний каталог пользователя.

Добавить пользователя можно как и вручную: Ввев все его данные в файл /etc/passwd, создав его домашний каталог и настроив права доступа в нем, ну и другие действия, по конфигурированию прав нового пользователя на различные сервисы и комманды. Но более удобна комманда adduser, которой в качестве аргументов следует указать все вышеперечисленные данные (UID, Password). Более подробную информацию по этой комманде вы можете получить введя adduser --help, или man adduser.


Report Page