Файл: Задание к Лабораторной 3.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.12.2023

Просмотров: 196

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

  1. Задание к Лабораторной №3


Основные команды ОС Linux. Команды работы с файлами и папками. Разрешения доступа.

Общие указания:

1. Сохраните локально копию задания

2. Скачайте программу Putty для удаленного доступа к серверу.

Задания:

1. Подключитесь к серверу с адресом 217.71.138.134

2. В качестве имени пользователя используйте mc(номер компьютера). Например, сидя за компьютером номер 4 используйте имя пользователя mc4. Пароль должен совпадать с номером компьютера.

3. Узнайте в каком месте дерева каталогов вы находитесь (pwd команда вам поможет).

4. Получите список файлов и папок корневого каталога. Сохраните его в файл с именем root-list.

5. Выведете на экран содержимое созданного файла.

6. Получите список файлов и папок корневого каталога c вхождением буквы b и сохраните его в файл root-list-b. Если знакомы с регулярными выражениями, то получите список файлов заканчивающихся на букву t.

7. Получите список файлов с подпапками для каталога boot. Сохраните в файл root-list-boot

8. С помощью grep и ls поучите имена файлов и папок, для которых никто кроме владельца не имеет права чтения

9. Выдайте содержимое папки /boot в одноколоночном формате с обратной сортировкой и сохраните ее в файл.

10. Сохраните список файлов /etc с указанием их размера

11. Создайте папку folder1 в своей домашней папке. Попасть туда можно с помощью cd

. Она находится в /home/mc(номер компьютера).

12. Создайте папку folder2 задав ей права – rwxrwxrwx.

13. Скопируйте в папку folder2 все созданные файлы.

14. Установите на нескольких файлах права доступа rwx------, на нескольких rwxr-x---. Первый раз с помощью цифрового способа задания доступа, а второй – с помощью буквенного.

15. С помощью команды su перейдите в режим супер-пользователя.

16. Смените владельца одного из файлов командой chown.

17. Покиньте режим супер-пользователя

18. Создайте в папке folder1 папку next-folder. Скопируйте туда все файлы, полученные командой ls.

19. Удалите папку folder1 и все ее содержимое.

20. Восстановите удаленное (дополнительное задание, не обязательно к выполнению)

21. Удалите папку так, чтобы команда rm не просила у вас подтверждения.

22. Найдите местоположения файла vsftpd.conf с помощью команды find.

Задание к Лабораторной №4


Работа с пользователями и группами в ОС Linux. Добавление пользователей и групп. Работа с правами доступа файловой системы. Установка сложных прав доступа множеству пользователей. Ограничение в правах доступа POSIX файловых систем.

1. Подключитесь к серверу 217.71.138.131.

2. В качестве имени пользователя используйте mc(номер компьютера). Например, сидя за компьютером номер 4 используйте имя пользователя user4. Пароль должен совпадать с номером компьютера.

3. Когда нужно используйте команду su для поднятия привилегий. Я рекомендую использовать ее в виде “ su - -c ‘blah-blah’ ” для выполнения blah-blah с правами рута.

4. Создайте группу пользователей userX-gr (например, для 5й машины группа user5-gr)

5. Добавьте туда нового пользователя userX-1 и userX-2, и userX-3.

6. Задайте им пароли.

7. В папке /laba создайте папку userX, в которой создайте папку restricted. Все дальнейшие работы выполняйте в ней.

8. Добавьте себя в группу userX-gr.

9. Разрешите группе чтение папки и его содержимого.

10. Создайте в папке restricted папку private, и запретите всем кроме себя в нее заходить, читать и записывать. Создайте в папке файлы и продемонстрируйте различие в правах доступа.

11. Создайте папку group-private и разрешите читать ее содержимое и содержимое файлов членам группы.

12. Создайте папку my-mail, в которую все могут только записывать, а вы имеете полные права доступа.

13. Создайте папку all, в которой все будут иметь полные права.

14. Создайте папку personal-mail в которой все могут читать файл зная его имя, но не могут что-то изменить.

15. Удалите созданных вами пользователей и созданную группу.

  1. Теоретический материал


Операционные системы семейства Linux отличаются от большинства других ОС в первую очередь тем, что не существует такого набора программного кода, который можно было бы назвать "официальным" Linux’ом. Эта свободная UNIX-подобная операционная система построена по модульному принципу и распространяется в огромном количестве вариантов, в основе которых лежит ядро Linux, дополненное разнообразными пакетами, выполняющими те или иные функции операционной системы, оболочками, создающими пользовательский интерфейс, и прикладными программами. Таких законченных пакетов-дистрибутивов (установочных пакетов программы) Linux множество, и наиболее известные из них – Red Hat, SuSE, Debian, Fedora, Mandriva, Gentoo, Ubuntu, Slackware. Самые известные российские дистрибутивы – ALT Linux, Astra Linux и ROSA Linux. И никто не мешает любому пользователю, обладающему достаточным уровнем знаний, собрать собственный дистрибутив, соорудив ОС, внешне не похожую на все остальные. При этом в такой ОС будут работать все программы, написанные на Linux.

В ОС семейства Linux существует два типа интерфейсов: графический интерфейс пользователя (Gnome, KDE, Xfce и множество гибридных оболочек) и интерфейс командной строки. И даже если мы работаем в графическом окружении, использование командной строки является краеугольным камнем в управлении Linux-системой.

Поскольку все команды выполняют определённые действия, их очень легко сгруппировать по функциям. Это весьма удобно, когда мы знаем, что нужно сделать, но не знаем, какой командой следует воспользоваться. Как только нужная команда будет найдена, мы сможем прочитать её подробное описание в справочном руководстве man или отыскать описание в Интернете. Чтобы открыть страницу справочного руководства man с интересующей нас командой, нужно выполнить команду man имя_команды. Например, для получения справочной информации о команде, которая отображает список файлов текущего каталога, необходимо воспользоваться командой man ls. (Не все из этих команд могут войти в окончательную сборку. Например, большинства из них нет в дистрибутиве Damn Small Linux – есть только базовые.)

Базовые команды для работы с терминалом.

  • clear — очищает всю выведенную в консоль информацию. Пригодится на тот случай, если терминал будет забит выводом других команд или содержимом ранее открытых документов. Помогает «начать с чистого листа».

  • history — отображает ранее введенные команды. По умолчанию показывает 10 последних, но при желании это значение можно изменить, добавив в качестве параметра любое число. Например, history 17, чтобы показать 17 последних выполненных операций.

  • whatis — вкратце описывает любую установленную программу. Вводим whatis и скармливаем ей в качестве аргумента название интересующей утилиты. Чтобы узнать, что такое wget, напишем whatis wget и получим краткую справку одной строкой.

  • man — демонстрирует подробное руководство по выбранной программе или команде. Чтобы выяснить, как работает wget и какие опции для него доступны, введем man wget. Получим массивное полотно со всей документацией для выбранной утилиты. P.S. Выйти из нее можно нажав на клавишу Q.

Команды для управления правами на файлы и директории.

  • sudo — выдает права суперпользователя. Используется перед любой другой командой в терминале, если нужно выполнить ее от имени администратора. Многие программы и операции запускаются исключительно при наличии этих прав, так что sudo используется часто. Например, чтобы обновить список пакетов в Ubuntu, введем: sudo apt-get update. При этом система запросит пароль администратора.

  • sudo su — переводит терминал в режим суперпользователя. В нем каждая введенная команда будет восприниматься системой так, будто перед ней ввели sudo. Помогает запускать несколько скриптов и утилит, требующих права администратора, без необходимости постоянно корректировать их или вводить пароль от учетной записи.

  • sudo gksudo — используется для запуска графических утилит от имени администратора. В Windows для этого есть специальная кнопка в контекстном меню, а в Linux — префикс. Синтаксис такой:

sudo gksudo название приложения, нуждающееся в запуске от имени администратора

  • sudo !! — запускает предыдущую команду от имени администратора. Используется, если до этого была неудачная попытка запустить программу. Помогает не тратить время на повторный ввод большого количества символов.

  • chmod — корректирует права доступа к выбранному файлу. Применяется исключительно с набором аргументов, обозначающих список прав. Допустим, я хочу выдать права на чтение и запись файла Timeweb.html на рабочем столе. Для этого введу в терминал: chmod 777
/Desktop/timeweb.html. Теперь его можно открывать и редактировать. Аналогичным образом пользователи поступают с системными файлами, когда приходит время что-то в них менять. По умолчанию большая их часть защищена от записи.


  • chown — назначает владельца для выбранной директории, документа, картинки или любого другого элемента в файловой системе. Синтаксис следующий:

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

    Команды для управления пользователями.

    Linux — многопользовательская система. Ей одновременно могут управлять несколько людей. Поэтому здесь достаточно сложная система добавления и редактирования учетных записей.

    • useradd — создает новую учетную запись. Например, мы хотим добавить пользователя с именем User. Для этого вводим: useradd User. Но свежесозданному аккаунту нужен не только логин, но и пароль. С помощью опций можно задать дополнительные характеристики новому пользователю.

    • passwd — задает пароль для учетной записи, работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd User (может быть любой другой пользователь). После этого система попросит придумать и указать пароль для новой учетной записи. По ходу набора пароля в терминале не будут отображаться даже звездочки, но он все равно учитывает каждую нажатую клавишу. Продолжайте набирать пароль вслепую.

    • usermod — обновляет выбранную учетную запись. Синтаксис простейший:

    usermod имя учетной записи, которую нужно обновить

    • userdel — удаляет выбранную учетную запись. Синтаксис аналогичен команде usermod.


    Установка, удаление и обновление пакетов.

    Для установки программ в Linux используются менеджеры пакетов. Они разнятся от дистрибутива к дистрибутиву, поэтому команды для управления ими тоже отличаются. Рассмотрим наиболее популярные.

    Debian/Ubuntu:

    • sudo apt-get install название пакета — устанавливает программу на выбор. Главное знать, как она называется.

    • sudo apt remove название пакета — стирает с жесткого диска имеющийся в системе пакет.

    • sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе, и тех, что хранятся в подключенных репозиториях.

    • sudo apt-upgrade — обновляет установленные пакеты до самых свежих версий, доступных в подключенных репозиториях.

    Red Hat Linux/CentOS:

    • sudo dnf install название пакета — устанавливает программу на выбор.

    • sudo dnf upgrade — обновляет установленные пакеты до самых свежих версий.

    • sudo dnf remove название пакета — стирает с жесткого диска имеющийся в системе пакет.


    Команды для навигации и базовой работы с файлами.

    • ls — покажет содержимое директории, в которой вы находитесь. Если после команды ввести адрес конкретной папки, то она покажет то, что хранится в ней. При добавлении аргумента -R в выводе команды появятся файлы из поддиректорий.

    • cdchange directory, что в переводе означает «сменить директорию». Из названия понятно, что с помощью этой команды можно перемещаться между папками. Вписываем ее, а потом адрес: cd /user/test/dir/111. Есть сокращенные варианты: cd- для перемещения в предыдущую директорию или cd (без аргументов) для прыжка в домашнюю папку.

    • pwd — укажет полный путь до директории, в которой вы находитесь. Если вы перепрыгнули на рабочий стол с помощью cd, то pwd покажет что-то в духе /home/Polzovatel/Desktop.

    • file — расскажет, что перед вами изображение, директория или текстовый документ, а также предоставит информацию о них (для изображений, например, это данные EXIF).

    • mv — применяется для перемещения файлов из одной папки в другую. Перенесем файл timeweb.txt из домашней директории на рабочий стол: mv text.txt /home/имя учетной записи/Desktop. Эту же команду используют, чтобы поменять имя файла. Для этого надо не указывать папку для перемещения, а просто ввести новое название для документа:

    mv text.txt text-2.txt

    • cp — используем, если нужно не переместить файл, а создать его копию в другой директории. Работает так же, как и mv. Указываем путь до файла, который нужно скопировать, и путь до директории, куда копируем:

    cp text-file.txt /home/Webmaster/Desktop

    • dd — мощная утилита для взаимодействия с разделами. С её помощью можно делать копии разделов, перемещать их, удалять без возможности восстановления.

    • rm — опасная команда для удаления директорий и их содержимого. Затирает все данные, которые обнаружит в указанной папке. То есть все субдиректории и файлы будут уничтожены. И восстановить их не получится. Про корзину этой команде ничего неизвестно. Синтаксис такой rm путь до директории, которую нужно стереть с компьютера. Чтобы удалить каталог Folder и все его содержимое из домашней папки пользователя, введем: rm /Folder.

    • mkdir — создает новую директорию. Допустим, мы хотим создать папку под новый проект на рабочем столе. Для этого введем команду: mkdir /Desktop/Folder. При желании можно разместить новую папку в промежутке между двумя уже существующими. К примеру: mkdir -p /home/New_Project/Newest_Project создаст папку New_Project в домашней директории и станет родителям для существующей папки Newest_Project.

    • rmdir — удаляет пустую папку. Акцентируем внимание на слове «пустую». В отличие от rm, rmdir не трогает другие файлы и субдиректории.

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

    • head — «голова», как и cat, показывает содержимое документов, но не всё, а только первые 10 строк. При желании количество строк можно увеличить или сократить, добавив параметр -n. Команда: head -n 2 /Desktop/text.txt покажет только первые две строчки документа text.

    • touch — эта команда создавалась для изменения времени последнего открытия файла или директории, но используют ее, в основном, для создания новых файлов. Например, для создания HTML-документа в домашней директории пользователя надо ввести в терминал: touch /home/имя учетной записи/test-site.html.

    • nano — запускает программу для редактирования текста nano. Используя дополнительные аргументы, можно создавать новые текстовые файлы. Например, nano /путь до директории, где нужно создать новый текстовый файл/название документа. Или же редактировать уже существующие. Альтернативой nano может служить vi. Продвинутый редактор 1976 года выпуска с бесконечными возможностями расширения, но с крайне специфичным управлением.

    • wc — считает количество строк, слов, знаков и байтов. В терминале надо ввести: wc /Desktop/text.txt и всё.

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


    wget https://upload.wikimedia.org/wikipedia/commons/7/7a/Anarchy-symbol.svg

    • zip — упаковывает файлы в архив в формате .zip. Синтаксис для создания zip-архива такой: zip название архива.zip путь до файла, который надо упаковать. К примеру:

    zip new-archive.zip /home/me/file-for-archive.txt

    • unzip — напрямую связан с zip, но выполняет противоположную функцию. Извлекает файлы из архива. Работает по тому же принципу – вводим команду, а потом путь до архива, который надо распаковать.

    • find — продвинутая команда по поиску объектов в файловой системе Linux. Можно искать элементы как по названию, так и по иным характеристикам. Например, указать тип файла: find -type d -name Folder. Такая команда покажет все директории с именем Folder.

    • grepfind ищет файлы и директории, а grep ищет текст в их содержимом. Как вариант, можно отыскать слово «тест» в документе «test.txt». Для этого введем следующую команду: cat test.txt | grep тест. cat перед grep необходим, чтобы вывести найденную информацию в консоль. В противном случае grep найдет искомый контент, но не покажет его.

    • diff — сокращение от слово difference. Показывает разницу между двумя текстовыми файлами. Для сравнения используется такой синтаксис: diff название первого файла название второго файла. К примеру, diff text-1.txt text-2.txt

    • mount — монтирует образ или раздел диска. Для использования нужно лишь указать путь к разделу или образу, который нужно смонтировать.

    • unmount — выполняет противоположную задачу.

    Команды для отображения базовой информации и управления системой.

    • df — показывает, сколько пространства занято на подключенных дисках и разделах. По умолчанию отображает данные в килобайтах. Можно переключиться на мегабайт, добавив параметр -m. Это выглядит так: df -m.

    • du — расскажет, сколько места занимает конкретный файл или папка. Чтобы узнать, насколько тяжелая директория Desktop, введем: du /Desktop. du отображает информацию в блоках. Но это неудобно, поэтому обычно к ней добавляют опцию -h, чтобы появились привычные мегабайты, килобайты и байты.

    • free — тоже связана с памятью, только с оперативной. Показывает, сколько занято, а сколько свободно. Чтобы включить отображение в мегабайтах, надо так же добавить аргумент -h.

    • uname — вывод информации о системе и сервере. Аргумент -a показывает имя компьютера, версию ядра, текущую дату и время, разрядность системы и ее тип. Можно запрашивать отдельные фрагменты данных через дополнительные опции: -s — только имя ядра; -n — имя компьютера (ноды) в сети; -o — название операционной системы; -p — тип процессора; -s — версия ядра.

    • whoami — покажет, кто мы есть на самом деле. Имя учетной записи, через которую мы зашли в систему или подключились к серверу.

    • date — из названия ясно, что команда отображает текущее время и дату.

    • sleep — задерживает запуск скриптов на выбранный период времени. Единица времени указывается через опции: -s — секунды; -m — минуты; -h — часы; d — дни.


    Остановимся подробнее на управлении пользователями и группами и предоставлении им прав доступа к различным каталогам.

    Создание пользователей

    Для создания пользователей используется команда useradd, но не будем спешить с ее применением, сначала ознакомимся с используемыми по умолчанию параметрами, для этого выполним:

    useradd -D

    Здесь мы можем увидеть место размещения домашних каталогов, оболочку по умолчанию и каталог с шаблоном домашней директории /etc/skel. Эта директория будет полностью скопирована в директорию нового пользователя и содержит базовые настройки окружения пользователя. Мы можем воспользоваться этим, если нам нужно формировать определенную структуру домашних каталогов или применять какие-либо специфичные настройки. При этом не рекомендуется вносить изменения в оригинальный /etc/skel, рекомендуется сделать его копию (можно и не одну), в которую внести все необходимые изменения.

    Также сто́ит обратить внимание на параметр:

    GROUP=100

    Но как нам известно в Debian пользовательские группы начинаются с 1000, а в RHEL c 500, поэтому в современных системах этот параметр игнорируется. Все параметры, кроме SKEL, могут быть изменены, но практический смысл это имеет только для HOME и SHELL.

    Скажем, мы настраиваем многопользовательский веб-сервер и хотим создавать домашние директории в каталоге веб-сервера, в этом случае можно выполнить:

    useradd -D -b /var/www/home

    А для изменения командной оболочки:

    useradd -D -s /bin/bash

    Чтобы добавить нового пользователя вводим:

    useradd -m maxim

    Ключ -m предписывает создать домашний каталог пользователя. Это самый простой вариант использования, но при использовании дополнительных ключей мы можем сразу задать или переопределить многие параметры пользователя. Получить их список можно командой:

    useradd -h

    Приведем некоторые из них:

    -b - задает домашний каталог пользователя

    -c - комментарий к учетной записи

    -g - задает основную группу пользователя

    -G - задает дополнительные группы

    -m - создать домашний каталог пользователя

    -N - не создавать группу с именем пользователя

    -k - путь к каталогу шаблона домашней директории (по умолчанию /etc/skel)

    -s - командная оболочка

    Например:

    useradd -m -b /var/www/maximov -g webuser -G www-data -k /etc/myskel -s /