Задание к Лабораторной №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. Удалите созданных вами пользователей и созданную группу.
Теоретический материал Операционные системы семейства 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 в выводе команды появятся файлы из поддиректорий. cd — change 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. grep — find ищет файлы и директории, а 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 /sbin/nologin maximov
Этой командой мы создадим пользователя maximov, которому назначим домашнюю директорию в /var/www/maxim, для которой будет использован шаблон из /etc/myskel, включим его в основную группу webuser и дополнительную www-data. Также запретим ему интерактивный вход в систему, назначив оболочкой /sbin/nologin.
Созданная учетная запись будет заблокирована до тех пор, пока мы не установим для нее пароль, это можно сделать следующей командой:
passwd maxim
которая установит пароль к учетной записи maxim. Для блокировки пароля используем:
passwd -l maxim
Нужно учесть, что данная блокировка распространяется только на вход по паролю, если у пользователя настроены иные способы входа, скажем по SSH-ключу, то доступ в систему с их помощью сохранится. Поэтому данный способ следует использовать в тех случаях, когда есть подозрение на компрометацию пароля, но в полной блокировке учетной записи нет необходимости. Для разблокировки потребуется заново установить пароль.
Изменение пользователей
Для того, чтобы изменить параметры уже существующей учетной записи используется команда usermod, для ознакомления с ее возможностями получим список ключей командой
usermod -h
Приведем некоторые из них:
-c - изменить комментарий
-d - новый домашний каталог
-g - новая основная группа
-G - новые дополнительные группы
-a - добавить пользователя в дополнительные группы, не удаляя из других групп, используется совместно с ключом -G
-l - новое имя учетной записи
-L - блокировать учетную запись
-m - переместить содержимое домашнего каталога, используется только вместе с -d
-U - разблокировать учетную запись
Например:
usermod -c "Maximov Maxim" -aG sudo maxim
Данная команда создаст новый комментарий к учетной записи и добавит пользователя maxim в дополнительную группу sudo.
Удаление пользователей
Для удаления учетной записи пользователя используется команда userdel, например:
userdel maxim
которая удалит учетную запись maxim.
Команда имеет дополнительные ключи, которые также можно просмотреть, запустив ее с ключом -h, практическую пользу представляют два из них:
-r - удалить домашний каталог пользователя
-f - удалять файлы, даже если они не принадлежат пользователю
На практике оба ключа обычно используются совместно, но будьте осмотрительны и перед удалением убедитесь, что удаляемые данные не нужны другим пользователям. Чтобы удалить пользователя вместе со всеми данными выполните:
userdel -rf maxim
При этом будет удален не только рабочий каталог, но и сообщения электронной почты пользователя, если таковые были в системе.
Управление группами пользователей
Для управления группами используется аналогичный набор команд: groupadd, groupmod и groupdel. Их ключи также можно посмотреть, запустив их с параметром -h.
Для создания группы используем:
groupadd office
Из дополнительных ключей имеют практический смысл:
-g - использовать указанный GUID
-f - завершить команду без ошибки если группа с таким именем уже существует и отменить действие -g, если указанный GUID уже используется.
При помощи команды usermod мы можем изменить GUID и наименование группы, скажем:
groupmod -n sales office
Данная команда переименует группу office в группу sales. Используемые ключи:
-g - изменить GUID группы
-n - изменить наименование группы
Ну и наконец groupdel, который используется для удаления групп:
groupdel office
Из параметров можно использовать: -f - удалить группу, даже если она является основной для пользователя
При удалении групп всегда нужно проявлять осмотрительность и не следует удалять группы, в которых состоят пользователи. Если же такая необходимость существует, то следует предварительно вывести из группы пользователей и изменить группу для всех объектов, которыми владела удаляемая группа.
Управление членством пользователей в группах
Управлять членством пользователей в группах можно различным образом. Выше мы уже приводили примеры с использованием usermod, для изменения основной группы пользователя используем:
usermod -g office ivan
Данная команда изменит основную группу пользователя ivan на office. Для добавления в дополнительные группы следует выполнить команду:
usermod -aG office, sales ivan
которая добавит пользователя ivan в группы office и sales.
Также существует и другая команда gpasswd, которая позволяет не только добавлять, но и удалять членство пользователей в группах. Для добавления пользователя в группу используйте:
gpasswd -a ivan office
Данная команда добавить пользователя ivan в группу office. Для удаления членства выполните:
gpasswd -d ivan office
Для того, чтобы проверить членство пользователя в группах используем команду:
groups ivan
где ivan - имя пользователя.
Чтобы быстро удалить пользователя из всех дополнительных групп используем:
usermod -G "" ivan
Как видим, управление пользователями и группами в Linux не такое уж и сложное дело, особенно когда мы понимаем, что значит тот или иной параметр и для чего мы это делаем.
Права доступа.
chmod (от англ. change mode) — команда для изменения прав доступа к файлам и каталогам, используемая в Unix-подобных операционных системах. Входит в стандарт POSIX, в Coreutils.
Синтаксис:
chmod [options] mode[,mode] file1 [file2 ...]
Опции:
-R рекурсивное изменение прав доступа для каталогов и их содержимого
-f не выдавать сообщения об ошибке для файлов, чьи права не могут быть изменены.
-v подробно описывать действие или отсутствие действия для каждого файла.
Команда никогда не изменяет права на символьные ссылки; однако для каждой символьной ссылки, заданной в командной строке, изменяет права доступа связанного с ней файла. Команда игнорирует символьные ссылки, встречающиеся во время рекурсивной обработки каталогов.
Аргумент команды chmod, задающий разрешения, может быть записан в двух форматах: в числовом и в символьном.
|