Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа 7
Учетные записи. Права доступа
Цель: Изучить методы создания и настройки основных компонентов системы безопасности Linux учетных записей и прав доступа.
Теоретические сведения
1. Пользователи и группы
Linux в целом и Ubuntu в частности системы многопользовательские, т.е. на одном компьютере может быть несколько различных пользователей, каждый со своими собственными настройками, данными и правами доступа к различным системным функциям.
Кроме пользователей в Linux для разграничения прав существуют группы. Каждая группа, так же как и отдельный пользователь, обладает неким набором прав доступа к различным компонентам системы, и каждый пользователь-член этой группы автоматически получает все права группы. То есть группы нужны для группировки пользователей по принципу одинаковых полномочий на какие-либо действия. Каждый пользователь может состоять в неограниченном количестве групп и в каждой группе может быть сколько угодно пользователей.
Однако как минимум в одной группе каждый пользователь состоит всегда. Это так называемая основная группа, по умолчанию она носит такое же имя, как и у самого пользователя.
Например, в Ubuntu есть группа: admin. Любой член этой группы получает неограниченные административные привилегии. Создаваемый при установке Ubuntu пользователь автоматически становится членом группы admin.
1.1 Суперпользователь
Во всех системах на базе Linux всегда есть один привилегированный пользователь root.
Полномочия этого пользователя не ограничены ничем, он может делать в системе абсолютно всё, что угодно. Кроме того, большинство системных процессов работают от имени root. Использование такого всемогущего пользователя крайне опасно, ибо любая ошибка может привести к катастрофическим последствиям, вплоть до полного уничтожения системы. Обычный же пользователь в Linux вообще говоря никак не может повлиять на работоспособность системы, в частности, не может устанавливать и удалять программы, управлять системными настройками и изменять файлы вне своего домашнего каталога. Поскольку использование суперпользователя крайне опасно, в Ubuntu он спрятан внутри системы, а управлением занимаются обычные пользователи со специальными административными привилегиями.
1.2 Администратор
Администратор в Ubuntu по умолчанию может по запросу делать всё то же самое, что и суперпользователь, однако случайно что-то испортить из-под администратора нельзя, т.к. перед выполнением каждого опасного действия система спрашивает у пользователя-администратора его пароль. Вообще говоря, администратор является обычным пользователем, однако при необходимости он может вмешаться в работу системы, но для этого ему потребуется ввести свой пароль (рисунок 1).
Рисунок 1. Запрос пароля для предоставления привилегий
Главное отличие администратора от суперпользователя как раз и заключается в необходимости вводить пароль для выполнения любого потенциально опасного действия. Если система спрашивает у вас пароль, значит, вы собираетесь как-то вмешаться в её работоспособность. Поэтому элементарная внимательность спасёт вас от ошибок.
Кстати, если вы введёте в подобное окно пароль не правильно, то система просто закроет его и ничего вам не скажет. Соответственно и операция, для которой требовались права администратора, выполнена не будет.
1.3 Создание пользователя при помощи графического интерфейса
Создавать и управлять пользователями и группами можно с помощью специального инструмента, находящегося в меню Система→Администрирование→Пользователи и группы (рисунок 1).
Рисунок 1. Программа управления пользователями и группами
Тут отображаются все учетные записи пользователей, которые присутствуют в системе. Для добавления, нажмите на кнопку "Добавить", после чего у вас будет затребован пароль. После ввода пароля, откроется окно создания нового пользователя (рисунок 2).
Рисунок 2. Окно создания нового пользователя
Введите Имя и имя, которое будет служить, как логин и нажмите "OK".
Задайте пароль и подтвердите его. Можно предоставить системе самой сгенерировать пароль, также можете указать, требуется ли он для входа в систему (рисунок 3).
Рисунок 3. Окно задания пароля
Нажмите «ОК» и еще раз введите пароль. Вновь появиться основное окно программы (рисунок 1).
Для добавления пользователя в разные группы, нажимаем на "Управление группами" (рисунок 4).
Рисунок 4. Окно управления свойствами групп
В появившемся списке групп, в которые может быть добавлен созданный пользователь, выберите нужную группу и нажмите "Свойства" (рисунок 5).
Рисунок 5. Окно свойств группы
Нажмите «ОК», закройте программу и перезагрузитесь. При входе в систему, вам будет предложено, под кем войти.
1.4 Создание пользователя при помощи консоли
Для создания пользователя или группы в терминале необходимо выполнить одну из следующих команд:
groupadd [параметры] имя_группы
-g идентификатор_группы |
Устанавливает идентификатор группы. Выбирайте значения от 500 и выше, так как меньшие обычно используются для системных учетных записей |
-r |
Указывает команде создать системную учетную запись. При этом автоматически будет подобран идентификатор ниже 500 |
useradd [параметры] имя_нового_пользователя
-b |
Базовая директория для домашней папки нового пользователя |
-c |
Дополнительные данные о новом пользователе |
-d |
Домашний каталог для нового пользователя |
-D |
useradd -D [параметры]: Выводит (при отсутствии дополнительных параметров) или задает значения параметров по умолчанию |
-e |
Определяет дату, когда учетная запись нового пользователя будет отключена. Дата задается в формате ГГГГ-ММ-ДД (то есть четыре цифры года, две - месяца и две - дня) |
-f |
Устанавливает количество дней между окончанием срока действия пароля и отключением учетной записи |
-g |
Имя или ID группы, к которой будет принадлежать новый пользователь. При отсутствии параметра -g при выполнении команды useradd будет добавлена группа, имя которой совпадает с именем пользователя, которого вы хотите создать. |
-G |
Список дополнительных групп, к которым будет принадлежать новый пользователь |
-h |
Отображает помощь по данной команде |
-k |
Использовать эту альтернативную каркасную директорию |
-K |
Перезаписывает настройки по умолчанию в /etc/login.defs |
-l |
Не добавлять пользователя в БД журналов последних действий и неуспешных действий |
-m |
Создавать домашнюю папку для нового пользователя |
-M |
Не создавать домашнюю папку для нового пользователя |
-N |
Не создавать с таким же именем как и новый пользователь |
-o |
Разрешать создавать пользователя с неуникальным UID |
-p |
Зашифрованный пароль новой учетной записи. Если этот параметр не указан, новая учетная запись отключается, пока не будет задан пароль |
-r |
Создать системную учетную запись |
-s |
Указывает командную оболочку для нового пользователя |
-u |
UID пользовательский ID новой учетной записи. Рекомендуется, чтобы он был больше 99 |
-U |
Создать группу с таким же именем как и новая учетная запись |
1.5 Создание пользователя вручную
За описание учетных записей отвечают 2 файла: /etc/passwd и /etc/group, хотя реально в большинстве дистрибутивов применяются три файла.
Файл /etc/group
Данные в файле расположены в виде строк, сформированных особым образом. В каждой строке присутствует несколько параметров, идентифицирующих группу, разделенных двоеточиями, в следующем порядке:
Второе поле используется редко, поэтому вместо него ставится латинская буква x (таким же образом обозначается пароль беспарольных пользователей).
Идентификатор суперпользователя всегда равен 0.
Четвертое поле не обязательно для заполнения.
Кроме этого, не рекомендуется задавать группам имена длиннее восьми символов, для поддержания совместимости с UNIX.
Файл /etc/passwd
Отвечает за описание характеристик каждой учетной записи, поэтому его изменение доступно только суперпользователю root. Параметры строк этого файла в порядке их следования приведены ниже:
Если пароль пользователя не указан, то вместо параметра 2 стоит буква x, запись пользователя считается неактивной. Идентификатор root всегда должен быть равен 0. Если для пользователя создана уникальная группа, идентификатор пользователя следует сделать равным идентификатору этой группы. Пятое поля не обязательно для заполнения и может равняться 0.
Файл /etc/shadow
Не всегда пароль указывается именно в файле /etc/passwd. В этом файле пароль указывается в незашифрованном виде, поэтому была найдена альтернатива в виде файла /etc/shadow, в котором пароль шифруется. Параметры строк этого файла в порядке их следования:
Для управления данными файлами есть несколько команд:
pwconv (без параметров)
Создает на базе файла /etc/passwd файл /etc/shadow.
pwunconv (без параметров)
Переписывает всю информацию о паролях в файл /etc/passwd и удаляет файл /etc/shadow.
grpconv (без параметров)
На базе файла /etc/group создает файл /etc/gshadow.
grpunconv (без параметров)
Создает файл /etc/group на основе уже имеющегося файла /etc/group и файла /etc/gshadow.
Вообще основной областью применения механизма пользователей и групп является не совсем разграничение доступа к различным функциям системы, а скорей разграничение доступа к файлам на винчестере. Но поскольку все запускаемые приложения, включая программы редактирования настроек и системные сервисы, являются обычными файлами, то через разграничение доступа к файлам на винчестере можно легко управлять доступом к различным функциям.
Чтобы создать новую учетную запись вручную, выполните следующие шаги:
1. Зайдите под учетной записью root. Это необходимо, так как в подавляющем большинстве случаев редактирование файлов конфигурации, в том числе и файлов, отвечающих за учетные записи, доступно только суперпользователю.
2. Сначала создадим для нового пользователя отдельную группу (можно обойтись уже существующей группой). Добавим в файл /etc/group следующую строку:
tom:x:502:tom
Идентификатор группы (в данном примере - 502) обязательно должен быть уникальным для этой группы. Если он уже указан в другой группе, для группы tom задайте другой идентификатор, причем постарайтесь, чтобы он был больше 99. Последнее поле заполнять необязательно.
3. Теперь необходимо зарегистрировать пользователя в файле /etc/passwd. Для этого добавим в файл /etc/passwd строку, схожую со следующей:
tom:x:502:502:Tom:/home/tom:/bin/bash
Как и в предыдущем примере, следует внимательно отнестись к идентификатору пользователя и сделать его уникальным. Если вы выбрали идентификатор группы tom, не равный 502, то в четвертом поле укажите его. Домашний каталог можно выбрать любой - это зависит от администратора системы. Интерпретатор команд также может быть любым - это зависит от пользователя.
Если в вашей системе используется файл /etc/shadow. придется зарегистрировать нового пользователя и в нем. Добавим в этот файл такую строку:
tom: * : : 0 : 99999: 7 : : :
В данном случае во втором поле стоит звездочка, потому что пароль должен быть определен отдельной командой, так как он шифруется.
4. Затем требуется создать каталог для пользователя. Это просто, однако есть один момент: в Linux программы хранят свои файлы конфигурации в каталоге пользователя. Для определения файлов конфигурации, которые должны находиться в каталоге пользователя, существует каталоге /etc/skel. Файлы, находящиеся в этом каталоге, должны быть в домашнем каталоге пользователя, поэтому можно просто скопировать этот каталог:
cp -R /etc/ske1 /home/tom
Смените группу владельца и владельца с помощью команды chown:
chown -R tom:tom /home/tom
5. Теперь необходимо задать пароль. Чтобы присвоить новому пользователю пароль, выполним команду:
passwd tom
После ввода команды система попросит задать новый пароль
2. Связки ключей
Для хранения различных пользовательских паролей в Ubuntu используются так называемые связки ключей (keyrings). Весь этот механизм служит одной цели никто, кроме конкретного пользователя, не должен иметь доступа к пользовательским паролям. Связка ключей это собственно зашифрованный контейнер для хранения паролей, для доступа к которому строго говоря тоже нужен пароль. Кстати, связки ключей не имеют ничего общего с административными правами. Они принадлежат конкретному пользователю и вообще не зависят от прав доступа к системным параметрам.
Вообще система связок ключей достаточно прозрачна и незаметна в использовании.
Каждая связка ключей блокируется паролем, соответственно, только после его ввода можно разблокировать это связку и получить доступ к её содержимому. Однако среди всех связок ключей есть одна по умолчанию, которая разблокируется при входе в систему конкретного пользователя, соответственно, никаких дополнительных паролей вводить для доступа к ней не нужно. Обычно все приложения используют именно связку ключей по умолчанию (которая в Ubuntu называется login), но иногда некоторые пытаются создать свою собственную. В этом случае вам сначала потребуется ввести пароль для новой связки, а потом нужно будет вводить его каждый раз, когда потребуется к ней доступ. Что не очень удобно. Поэтому если у вас какое-то приложение просит пароль для разблокирование связки ключей, то можете обратить внимание на дополнительные параметры в диалоге ввода пароля. Там будет галочка разблокировать при входе в систему.
Если её установить, то больше вам не потребуется вводить пароль для доступа к этой связки ключей, она так же, как и связка по умолчанию, будет разблокироваться при входе пользователя в систему.
Для управления паролями и связками ключей, а так же ключами шифрования, в Ubuntu существует специальная утилита Пароли и ключи шифрования, доступная из меню Приложения→Стандартные (рисунок 2).
Рисунок 2. Программа управления паролями и ключами шифрования
3. Права доступа
Любой файл и каталог в Linux имеет пользователя-владельца и группу-владельца.
Кроме того, у любого файла и каталога есть три группы прав доступа:
Каждая группа состоит из прав на:
Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов - просматривать перечень имен файлов в каталоге. Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право создавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут Execute, то независимо от его расширения он считается программой, которую можно запустить. Для каталогов право на исполнение и право на чтение всегда идут вместе и означают одно и то же.
То есть, изменяя владельцев того или иного файла и различные группы прав доступа к нему, можно гибко управлять доступом к этому файлу. Например, сделав себя владельцем некоего файла и полностью запретив к нему доступ всем, кроме пользователя-владельца, можно скрыть содержимое и запретить изменение этого файла для всех других пользователей. Такая же штука проходит и с каталогами. Можно, например, запретить записывать файлы в каталог, или вообще скрыть его содержимое от посторонних глаз.
Команда chmod
Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.
Символьная форма прав доступа
Если войти в любой каталог, где есть файлы, и набрать ls -l, то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: d - директория, - - это обычный файл. Три последующих - права доступа владельца к этому файлу. Если первый символ из этих трех - r, владелец имеет право читать этот файл, а если -, то не имеет. Следующие 2 символа - w - писать и x - запускать. Если вместо них стоит -, значит, владелец этого права не имеет. Еще 3 символа - права доступа группы, еще три - права всех остальных пользователей.
Например:
drwxrwxrwx - директория, к которой все имеют полный доступ.
Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет -rwxrwxrwx, другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл.
Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита -rw-r--r--, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа drwxr-xr-x, что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать.
С правами доступа в символьной форме chmod работает так:
chmod {a,u,g,o}{+,-}{r,w,x} <filenames>
Т.е., вы выбираете из all (все), user (пользователь), group (группа) или other (другие). По умолчанию считается, что права изменяются для всех (all). Далее указываете, либо вы добавляете права (+), либо лишаете прав (-). И, наконец, вы указываете один или несколько режимов: read, write или execute.
Числовая форма прав доступа
Теперь права доступа в числовой форме. Для некоторых эта форма может показаться более простой. Надо запомнить только следующее:
400 - владелец имеет право на чтение
200 - владелец имеет право на запись
100 - владелец имеет право на выполнение
40 - группа имеет право на чтение
20 - группа имеет право на запись
10 - группа имеет право на выполнение
4 - остальные имеют право на чтение
2 - остальные имеют право на запись
1 - остальные имеют право на выполнение
Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые вы хотите поставить файлу.
Пример:
400+200+100+40+4=744
chmod 744 stuff
владелец может делать все, а остальные - только читать.
Команда chown
Изменение владельца файла осуществляется командой chown, например:
sudo chown <имя нового владельца> <имя файла>
Для передачи каталога надо вводить:
sudo chown -R <имя нового владельца> <имя каталога>
Команда chgroup
Изменение группы, которой принадлежит файл:
sudo chown <название новой группы> <имя файла>
Для передачи каталога надо вводить:
sudo chown -R <название новой группы> <имя каталога>
Конкретному пользователю Ubuntu принадлежит только его домашний каталог и все его содержимое. В системе этот каталог находится по адресу /home/имя_пользователя. Все остальные файлы системы, включая все приложения, системные настройки и т.д., располагающиеся вне /home, принадлежат преимущественно root.
Все системные файлы и каталоги принадлежат root недаром, им всем выставлены права на изменение только для пользователя-владельца, таким образом никто, кроме root, не может вмешаться в работу системы и что-то поменять в системных файлах.
Это конечно очень хорошо для безопасности, но что же делать, если вам нужно изменить какие-нибудь системные файлы?
Есть два пути:
sudo это консольная утилита. Она позволяет «прикинуться» суперпользователем при выполнении конкретной команды, таким образом, получив неограниченные права. Например, команда
sudo aptitude update
обновит данные о доступных вам приложениях.
Сама по себе команда
aptitude update
работает, только если её запускает root. Однако, запуская её с помощью sudo, вы выдаёте себя за суперпользователя, им при этом не являясь. Естественно, для использования sudo вы должны обладать правами администратора. При этом при запуске команды через sudo, система спросит у вас ваш пароль, однако в целях безопасности при его вводе вам не будет ничего показываться, ни звёздочек, ни чёрточек, ни птичек, ничего. Если вы являетесь администратором и правильно ввели пароль, то указанная после sudo команда исполнится от имени root.
Через терминал можно сделать всё, что угодно, так что, имея возможность стать суперпользователем, вы можете выполнить все необходимые вам настройки. Однако иногда удобно использовать графические приложения, при этом обладая правами рута. Например, если вам надо скопировать файлы в системные каталоги.
Для запуска графических приложений от имени root откройте диалог запуска GNOME сочетанием клавиш AltF2 и введите
gksudo имя_приложения
Например, для запуска файлового менеджера Nautlus надо ввести
gksudo nautilus
2. Практическое задание
1. Создайте пользователя при помощи графического интерфейса
2. Создайте пользователя при помощи консоли
3. Создайте пользователя вручную
4. Настройте параметры для пользователей по умолчанию при помощи консоли
5. Настройте права для файла в символьной форме
6. Настройте права для файла в числовой форме
7. Смените владельца файла
3. Контрольные вопросы
1. Может ли пользователь по умолчанию не состоять ни в одной группе?
2. Опишите учетную запись root.
3. Опишите учетную запись администратора.
4. Опишите команду groupadd.
5. Опишите команду useradd.
6. Опишите состав файла /etc/group.
7. Опишите состав файла /etc/passwd.
8. Опишите состав файла /etc/shadow.
9. Команды для управления файлами учетных записей.
10. Опишите понятие связки ключей.
11. Опишите принцип разграничения доступа к файлам в Linux.
12. Опишите команду chmod.
13. Опишите команду chown.
14. Опишите команду chgroup.
15. Опишите механизм повышения прав.