Лабораторная работа №3 по дисциплине: «Операционные системы» Работа пользователя в Linux



страница4/5
Дата24.11.2016
Размер2.04 Mb.
Просмотров1445
Скачиваний0
ТипЛабораторная работа
1   2   3   4   5

Синтаксис:

chmod [опции] режим файл...


Например, лишим права записи в файл ./file его владельца andrew (рис. 58)

Рис. 58 Лишения владельца права на запись в файл ./file



Опции:

  • -c, --changes - подробно описывать действия для каждого файла, чьи права действительно изменяются.

  • -f, --silent, --quiet - не выдавать сообщения об ошибке для файлов, чьи права не могут быть изменены.

  • -v, --verbose - подробно описывать действие или отсутствие действия для каждого файла. Э

Второй вариант задания команды chmod (он используется чаще) основан на цифровом представлении прав. Для этого мы кодируем символ r цифрой 4, символ w — цифрой 2, а символ x — цифрой 1. Для того, чтобы предоставить пользователям какой-то набор прав, надо сложить соответствующие цифры. Получив, таким образом, нужные цифровые значения для владельца файла, для группы файла и для всех остальных пользователей, задаем эти три цифры в качестве аргумента команды chmod (ставим эти цифры после имени команды перед вторым аргументом, который задает имя файла). Например, если надо дать все права владельцу (4+2+1=7), право на чтение и запись — группе (4+2=6), и не давать никаких прав остальным, то следует дать такую команду:


[user]$ chmod 760 file_name
В качестве примера предоставим все права всем для файла /home/andrew/file и попробуем записать в него, что-нибудь от имени другого пользователя (рис. 59)



\

Рис. 59 Результат предоставления всем всех прав доступа


В итоге пользователь drew смог записать, что-то в файл file, владельцем которого является andrew.
Предоставление прав доступа к файлу также зависит от прав доступа к каталогу, в котором находится файл. Например, даже если права доступа к файлу установлены как -rwxrwxrwx, другие пользователи не могут иметь доступа к файлу, пока они не имеют прав на чтение и исполнение к каталогу, в котором находится файл. Например, если бы я хочу ограничить доступ ко всем своим файлам, я могу установить права доступа к своему домашнему каталогу /home/andrew как -rwx------. Таким образом, никакой другой пользователь не будет иметь доступа к моим каталогам и ко всем файлам и каталогам внутри него. Мне не нужно будет теперь беспокоиться об отдельных правах доступа к каждому его файлу. Другими словами, чтобы, в принципе, иметь доступ к файлу, вы должны иметь право на исполнение ко всем каталогам вдоль пути к файлу и право на чтение (или исполнение) к самому файлу. Как правило, пользователи системы Linux не скрывают свои файлы. Обычно права доступа к файлам устанавливаются как -rw-r-r--, что позволяет другим пользователям читать файлы, но не изменять их. Для каталогов права доступа часто предоставляются в виде -rwxr-xr-x, что позволяет другим пользователям просматривать ваши каталоги, но не создавать и не удалять файлы в них.

  • -R, --recursive - рекурсивное изменение прав доступа для каталогов и их содержимого.

Выполнять смену прав доступа к файлу с помощью команды chmod может только сам владелец файла или суперпользователь. Для того, чтобы иметь возможность изменить права группы, владелец должен дополнительно быть членом той группы, которой он хочет дать права на данный файл.

Чтобы завершить рассказ о правах доступа к файлам, надо рассказать еще о трех возможных атрибутах файла, устанавливаемых с помощью той же команды chmod. Это те самые атрибуты для исполняемых файлов, которые в индексном дескрипторе файла в двухбайтовой структуре, определяющей права на файл, занимают позиции 5-7, сразу после кода типа файла.


Первый из этих атрибутов — так называемый "бит смены идентификатора пользователя". Смысл этого бита состоит в следующем.
Обычно, когда пользователь запускает некоторую программу на выполнение, эта программа получает те же права доступа к файлам и каталогам, которые имеет пользователь, запустивший программу. Если же установлен "бит смены идентификатора пользователя", то программа получит права доступа к файлам и каталогам, которые имеет владелец файла программы (таким образом, рассматриваемый атрибут лучше называть "битом смены идентификатора владельца"). Это позволяет решать некоторые задачи, которые иначе было бы трудно выполнить. Самый характерный пример — команда смены пароля passwd. Все пароли пользователей хранятся в файле /etc/passwd, владельцем которого является суперпользователь root. Поэтому программы, запущенные обычными пользователями, в том числе команда passwd, не могут производить запись в этот файл. А, значит, пользователь как бы не может менять свой собственный пароль. Но для файла /usr/bin/passwd установлен "бит смены идентификатора владельца", каковым является пользователь root. Следовательно, программа смены пароля passwd запускается с правами root и получает право записи в файл /etc/passwd (уже средствами самой программы обеспечивается то, что пользователь может изменить только одну строку в этом файле).

Установить "бит смены идентификатора владельца" может суперпользователь с помощью команды [root]# chmod +s file_name

Еще один возможный атрибут исполняемого файла — это "бит сохранения задачи" или "sticky bit" (дословно — "бит прилипчивости"). Этот бит указывает системе, что после завершения программы надо сохранить ее в оперативной памяти. Удобно включить этот бит для задач, которые часто вызываются на выполнение, так как в этом случае экономится время на загрузку программы при каждом новом запуске. Этот атрибут был необходим на старых моделях компьютеров. На современных быстродействующих системах он используется редко. Если используется цифровой вариант задания атрибутов в команде chmod, то цифровое значение этих атрибутов должно предшествовать цифрам, задающим права пользователя: [root]# chmod 4775 file_name

При этом веса этих битов для получения нужного суммарного результата задаются следующим образом:

4 — "бит смены идентификатора пользователя",

2 — "бит смены идентификатора группы",

1 — "бит сохранения задачи (sticky bit)".
Если какие-то из этих трех битов установлены в 1, то несколько изменяется вывод команды ls -l в части отображения установленных атрибутов прав доступа. Если установлен в 1 "бит смены идентификатора пользователя", то символ "x" в группе, определяющей права владельца файла, заменяется символом "s". Причем, если владелец имеет право на выполнение файла, то символ "x" заменяется на маленькое "s", а если владелец не имеет права на выполнение файла (например, файл вообще не исполняемый), то вместо "x" ставится "S". Аналогичные замены имеют место при задании "бита смены идентификатора группы", но заменяется символ "x" в группе атрибутов, задающих права группы. Если равен 1 "бит сохранения задачи (sticky bit)", то заменяется символ "x" в группе атрибутов, определяющей права для всех остальных пользователей, причем "x" заменяется символом "t", если все пользователи могут запускать файл на выполнение, и символом "T", если они такого права не имеют.
Таблица 2 – Примеры задания прав доступа командой chmod

Команда

Результат

chmod a+r file

Даёт всем пользователям право на чтение файла.

chmod +x file

Аналогично предыдущему примеру. Если никакие из набора символов a, u, g или o не указаны, то это эквивалентно указанию символа a.

chmod og-x file

Лишает всех пользователей, кроме собственника, права на исполнение файла.

chmod u+rwx file

Разрешает собственнику читать, изменять и исполнять файл.

chmod o-rwx file

Запрещает читать, записывать и исполнять файл всем пользователям, кроме собственника файла и пользователей из группы.

Chmod 777 file

Даёт всем пользователям право на чтение, запись и исполнение файла.

Таблица 3 – Некоторые примеры последовательности прав и их расшифровка



rwxr-x--x

Пользователь-владелец файла может читать файл, изменять и исполнять его; пользователи, члены группы-владельца могут читать и исполнять файл, но не изменять его; все остальные пользователи могут лишь запускать файл на выполнение.

rw-------

Только владелец файла может читать и изменять его.

rwxrwxrwx

Все пользователи могут читать файл, изменять его и запускать на выполнение.

---------

Никто, включая самого владельца файла, не имеет прав на его чтение, запись или выполнение. Хотя такая ситуация вряд ли имеет практический смысл, с точки зрения системы она является вполне корректной. Разумеется, владелец файла может в любой момент изменить права доступа к нему.


Команда chown

chown изменяет владельца и/или группу для каждого заданного файла.

В качестве имени владельца/группы берется первый аргумент, не являющийся опцией. Если задано только имя пользователя (или числовой идентификатор пользователя), то данный пользователь становится владельцем каждого из указанных файлов, а группа этих файлов не изменяется. Если за именем пользователя через двоеточие следует имя группы (или числовой идентификатор группы), без пробелов между ними, то изменяется также и группа файла.  
Синтаксис: chown [опции] пользователь[:группа] файл...

В качестве примера изменим владельца файла ./file. (рис. 60)



Рис. 60 Результат выполнения команды chown andrew ./file

После выполнения команды chown andrew ./file владельцем файла стал пользователь andrew.
Опции:


  • -c, --changes - подробно описывать действие для каждого файла, владелец которого действительно изменяется.

  • -f, --silent, --quiet - не выдавать сообщения об ошибках для файлов, чей владелец не может быть изменен.

  • -h, --no-dereference - работать с самими символьными ссылками, а не с файлами, на которые они указывают.

  • -v, --verbose - подробное описание действия (или отсутствия действия) для каждого файла.

  • -R, --recursive - рекурсивное изменение владельца каталогов и их содержимого.

  • --dereference - изменяет владельца файла, на который указывает символьная ссылка, вместо самой символьной ссылки.

  • --reference=rfile - изменяет владельца файла на того, который является владельцем rfile.


Команда chgrp

C hgrp изменяет группу каждого заданного файла на группу, которая может быть представлена как именем группы, так и ее числовым идентификатором (GID).  

Синтаксис: chgrp [опции] группа файл...

Опции:


Все те же самые, что и у команды chown.

Проделаем все тоже самое, что и в примере выше только вместо команды chown воспользуемся командой chgrp (рис. 61).


Рис. 61 Результат выполнения команды chgrp andrew ./file


Mtools

В системе Linux имеется набор утилит mtools, которые обеспечивают доступ к дискетам, отформатированным для использования в MS-DOS. Команда mсору позволяет копировать файлы на такую дискету и с нее. Никаких специальных операций вроде операции монтирования проводить не нужно. В частности, при использовании утилиты mtools не придется монтировать раздел MS-DOS для получения доступа к нему. В отличие от обычных путевых имен DOS, в путевых именах, используемых с mtools, вместо обратной косой черты используется обычная косая. Каталог docs на диске А: обозначается путевым именем a:/docs, а не a:\docs.

С помощью команды mdir можно получить список файлов, имеющихся на дискете MS-DOS, а с помощью команды mcd ≈ переходить на этой дискете из каталога в каталог.

Большинство стандартных команд MS-DOS могут выполняться как операции mtools . В частности, можно создавать каталоги MS-DOS (команда mmd) и удалять файлы (mdel).

Доступ к разделам MS-DOS конфигурируется файлом /etc/mtools.conf, в котором перечислены различные стандартные разделы MS-DOS и дисководы. Каждый дисковод или раздел обозначается определенным именем устройства.


  1. Управление заданиями.

Научиться запускать и управлять заданиями в оперативном и фоновом режимах. Команды jobs, ps, top, fg, bg, kill, stop, at, Ctrl+Z.
Задания и процессы

Всякая выполняющаяся в Linux программа называется процессом. Linux как многозадачная система характеризуется тем, что одновременно может выполняться множество процессов, принадлежащих одному или нескольким пользователям. Работающий процесс также называют заданием (job). Понятия процесс и задание являются взаимозаменяемыми. Однако, обычно процесс называют заданием, когда имеют ввиду управление заданием (job control). Управление заданием — это функция командной оболочки, которая предоставляет пользователю возможность переключаться между несколькими заданиями.

В большинстве случаев пользователи запускают только одно задание — это будет та команда, которую они ввели последней в командной оболочке. Однако многие командные оболочки (включая bash и tcsh) имеют функции управления заданиями (job control), позволяющие запускать одновременно несколько команд или заданий (jobs) и, по мере надобности, переключаться между ними.

Управление заданиями может быть полезно, если, например, вы редактируете большой текстовый файл и хотите временно прервать редактирование, чтобы сделать какую-нибудь другую операцию. С помощью функций управления заданиями можно временно покинуть редактор, вернуться к приглашению командной оболочки и выполнить какие-либо другие действия. Когда они будут сделаны, можно вернуться обратно к работе с редактором и обнаружить его в том же состоянии, в котором он был покинут. У функций управления заданиями есть ещё много полезных применений.



Передний план (оперативный режим) и фоновый режим

Задания могут быть либо на переднем плане (foreground), либо фоновыми (background). На переднем плане в любой момент времени может быть только одно задание. Задание на переднем плане — это то задание, с которым вы взаимодействуете; оно получает ввод с клавиатуры и посылает вывод на экран (если, разумеется, вы не перенаправили ввод или вывод куда-либо ещё). Напротив, фоновые задания не получают ввода с терминала; как правило, такие задания не нуждаются во взаимодействии с пользователем.

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

Для управления выполнением процессов в Linux предусмотрен механизм передачи сигналов. Сигнал — это способность процессов обмениваться стандартными короткими сообщениями непосредственно с помощью системы. Сообщение-сигнал не содержит никакой информации, кроме номера сигнала (для удобства вместо номера можно использовать предопределённое системой имя). Для того, чтобы передать сигнал, процессу достаточно задействовать системный вызов kill(), а для того, чтобы принять сигнал, не нужно ничего. Если процессу нужно как-то по-особенному реагировать на сигнал, он может зарегистрировать обработчик, а если обработчика нет, за него отреагирует система. Как правило, это приводит к немедленному завершению процесса, получившего сигнал. Обработчик сигнала запускается асинхронно, немедленно после получения сигнала, что бы процесс в это время ни делал.

Два сигнала — номер 9 (KILL) и 19 (STOP) — всегда обрабатывает система. Первый из них нужен для того, чтобы убить процесс наверняка. Сигнал  STOP приостанавливает процесс: в таком состоянии процесс не удаляется из таблицы процессов, но и не выполняется до тех пор, пока не получит сигнал 18 (CONT) — после чего продолжит работу. В командной оболочке Linux сигнал STOP можно передать активному процессу с помощью управляющей последовательности Ctrl-Z.

Сигнал номер 15 (TERM) служит для прерывания работы задания. При прерывании (interrupt) задания процесс погибает. Прерывание заданий обычно осуществляется управляющей последовательностью Ctrl-C. Восстановить прерванное задание никаким образом невозможно. Следует также знать, что некоторые программы перехватывают сигнал TERM (при помощи обработчика), так что нажатие комбинации клавиш Ctrl-C  может не прервать процесс немедленно. Это сделано для того, чтобы программа могла уничтожить следы своей работы прежде, чем она будет завершена. На практике, некоторые программы вообще нельзя прервать таким способом.

Ранее я работал с командой find. Я производил поиск различных файлов в каталоге /usr/share принадлежащих пользователю Andrew, и в принципе поиск происходил быстро. Но что было бы если бы я проводил поиск по всему каталогу /. Потребовалось бы гораздо больше времени, и я не мог бы ввести другую команду до окончания поиска.

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

Простейший способ запуска задания в фоновом режиме - завершение команды запуска знаком амперсанда (&). Этот знак заставляет оболочку запускать команду в фоновом режиме с незамедлительным возвратом подсказки командной строки на экран.

Команда jobs

Команда jobs выводит список выполняемых или остановленных заданий.

В качестве примера запустим в фоновом режиме команду find / > text. И воспользуемся командой jobs. Результат отражен на рисунке 62.

Рис. 62 Результат запуска команды jobs после запуска задания в фоновом режиме

В результате был выведен список в котором видно, что выполняется задание find / >text.

Комбинация Ctrl+Z

Если программа запущена в режиме переднего плана, то ее выполнение может быть приостановлено комбинацией клавиш Ctrl+Z. Эта комбинация интерпретируется оболочкой как команда временной остановки текущего процесса. Например, если команду поиска из предыдущего примера запустить в режиме переднего плана, то после нажатия Ctrl+Z поиск временно прекращается. Если теперь ввести команду jobs, выведется список в котором будет указано, наше остановленное задание find / > text (рис. 63) .



Рис. 63 Результат запуска команды jobs после приостановки задания запущенного в режиме переднего плана



Команда bg и fg

Если функция управления заданиями активна, то вы можете вновь запустить приостановленный процесс. Чтобы вновь запустить процесс, остановленный командой stop, вы сначала должны определить JID с помощью команды jobs. Затем вы можете использовать JID со следующими командами:

fg - возобновляет приостановленное задание или переводит задание из фонового режима в оперативный;

Возобновим остановленное ранее задание в оперативном режиме (рис. 64)



Рис. 64 Возобновление остановленного задание в оперативном режиме

bg - вновь запускает приостановленное задание в фоновом режиме.

Возобновим остановленное ранее задание в оперативном режиме (рис. 65)



Рис. 65 Возобновление остановленного задание в фоновом режиме

После того, как остановленное задание переводится в фоновый режим его выполнение возобновляется, и команда jobs показывает его состояние как Running (выполняется) или Done (готово).

Команда kill

В некоторых случаях остановленное или фоновое задание приходится завершать либо уничтожать. Для уничтожения процесса, указанного его идентификатором (РID), используется команда kill. Можно воспользоваться командой ps для определения идентификатора процесса либо уничтожать остановленные или фоновые задания непосредственно по их номерам. Утилита kill посылает сигнал процессу или процессам, заданным операндами pid.



Синтаксис:

kill [-s СИГНАЛ | -СИГНАЛ] PID...

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

Значение операнда pid будет использоваться в качестве аргумента pid. В качестве аргумента sig используетсмя значение, заданное в опции -s, или SIGTERM, если эта опция не указана.



Замечание. Процесс, которому посылается сигнал, должен принадлежать текущему пользователю, но суперпользователь (root) может посылать сигналы любым процессам.

Опции:


  • -l - Выдать все значения сигналов, поддерживаемые в данной реализации, если операнды не указаны.

  • -s сигнал - Задает сигнал, который надо послать, используя одно из символьных имен.

Произведем уничтожение остановленного задания find / > text. Для этого нужно сначала определить pid Затем послать сигнал SIGKILL(9). Результат отображен на рисунке 66.

Рис. 66 Результат уничтожения остановленного задания



Команда stop

Команда stop приостанавливает временно процессы.

Синтаксис: stop JID
Команда Ps:

Ps - выдача информации о состоянии процессов.

Синтаксис: ps [optinon]

Команда ps выдает информацию об активных процессах. По умолчанию информация дается только о процессах, ассоциированных с данным терминалом.

По умолчанию выводятся:


  • идентификатор процесса

  • идентификатор терминала

  • истраченное к данному моменту время ЦП

  • имя команды

Если нужна иная информация, следует пользоваться опциями. Некоторые опции имеют один аргумент или список аргументов.

Опции:

-e - вывести информацию обо всех процессах

-d - вывести информацию обо всех процессах, кроме лидеров групп

-a - вывести информацию обо всех наиболее часто запрашиваемых процессах

-f - генерировать полный листинг(рис. 67)

Рис. 67 Результат выполнения команды ps -f


-l - генерировать листинг в длинном формате

-p – список идентификаторов процессов. Можно узнать какому процессу принадлежит pid=1

Для этого введем ps –p 1 (рис. 68)

Рис. 68 Результат выполнения команды ps –p 1

Из результата видно что, pid=1 принадлежит процессу init.

-u – список идентификаторов пользователей


Каталог: files -> stud
stud -> Отчет по лабораторной работе №1
stud -> Лабораторная работа №1 «Сетевое взаимодействие Windows и Linux» студент группы 10-в-2
stud -> Лабораторная работа №3 по дисциплине: «Операционные системы» Работа пользователя в Linux
stud -> Лабораторная работа №2 по дисциплине: «Программное обеспечение вычислительных сетей» «Установка и конфигурирование ос windows 2003 Server»
stud -> 1. Сетевые модели организации пользователей: модель рабочих групп и доменная модель. Доверительные отношения
stud -> Логика развития и ключевые свойства версий ос windows 3x, 9x, nt, 2000, xp
stud -> Практическая работа №1 «Сетевые свойства и конфигурирование Windows 7» студент группы 10-в-1 Маясов Д. А проверил
stud -> «Сетевые свойства и конфигурирование Windows 7»
stud -> Server-based (Сеть на базе выделенного сервера)


Поделитесь с Вашими друзьями:
1   2   3   4   5


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал