Изменение базы данных пользователей

Для добавления и удаления пользователей и групп существует набор специальных утилит: useradd, userdel, groupadd, groupdel. Эти команды доступны только суперпользователю и имеют единственный обязательный параметр: имя пользователя или группы.

С помощью команд usermod и groupmod можно изменять информацию в базах данных пользователей и групп. Эти команды также может выполнять только администратор системы.

Команда passwd позволяет простым пользователям изменять свой системный пароль, а суперпользователю — изменять пароль любого из пользователей системы.

 

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

Для изменения владельца файла или группы владельцев используются команды chown и chgrp. Из соображений безопасности эти утилиты доступны только суперпользователю.

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

 

Сброс пароля

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

Когда можно использовать GRUB

GRUB (англ. GRand Unified Bootloader) — загрузчик операционной системы от проекта GNU. GRUB позволяет пользователю иметь несколько установленных операционных систем и при включении компьютера выбирать одну из них для загрузки.

Если у вас установлен загрузчик GRUB и есть доступ к редактированию параметров загрузки выделенной строки, то задача становится очень простой.

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

Нажмите 'e' для редактирования. Выберите строку ядра. Добавьте 'single' в конец строки. Нажмите 'b' для загрузки. Если система продолжает запрашивать пароль рута, добавьте в конец строки init=/bin/bash Снова нажмите 'b' для загрузки

После этого вы либо увидите приглашение для рута, либо восстанавливающее меню, где нужно выбрать строку с рутом. Используйте passwd <имя пользователя> для того чтобы изменить пароль у любого пользователя

Выполните команду reboot для перезагрузки системы и затем авторизуйтесь с новым паролем

Когда нет возможности использовать GRUB

Если вы не используете GRUB по каким-то причинам, вы можете восстановить пароль с помощью live CD

 

ПРОТИВОДЕЙСТВИЕ СБРОСУ: ставить пароль на загрузку т.е. BIOS, запрещать редактирование опций меню, обеспечивать физическую защиту сервера

 

В) Как говорилось ранее, с каждым процессом связано 4ре идентификатора: реальный и эффективный пользовательский (UID), а также реальный и эффективный групповой (GID). Реальные номера применяются для учета использования системных ресурсов, а эффективные для определения прав доступа к процессам. Как правило, реальные и эффективные идентификаторы совпадают. Владелец процесса может посылать ему сигналы, а также изменять приоритет.

 

su [-] [имя_пользователя [аргумент ... ]]

Команда su позволяет пользователю выполнять команды от имени другого пользователя, не завершая текущий сеанс, или получить роль. По умолчанию предполагается работа от имени пользователя root.

Для использования su необходимо ввести соответствующий пароль (если только команду не вызывает пользователь root). Если введён правильный пароль, su создает новый процесс командного интерпретатора, с такими же реальными и эффективными идентификаторами пользователя и группы, а также списком дополнительных групп, что и у указанного пользователя.

Запуск su должен обязательно производиться с дефисом в качестве параметра. При этом обновляются переменные окружения $HOME и $PATH, т.е. домашним каталогом становится /root, а в $PATH добавляются /sbin и /usr/sbin. При запуске su без дефиса $HOME остается равным домашнему каталогу пользователя, который запускал эту команду, и в результате работы программ, запущенных из-под su, туда могут быть записаны файлы (например, конфигурации этих программ) с правами рута, что может привести к ошибкам и странностям в дальнейшей работе.

Чтобы вернуться в оболочку обычного пользователя, нужно дать команду exit, logout или нажать Ctrl-D.

Исторически единственным универсальным способом выполнить команду от имени другого пользователя в Unix была программа su. Затем появилась команда sudo, и это был прорыв. Теперь администратор мог указывать список разрешенных команд для каждого пользователя (или группы пользователей), файлы, доступные для редактирования, специальные переменные окружения и многое другое (все это великолепие управляется из /etc/sudoers, см. man sudoers от своего дистрибутива). Нужно использовать команду visudo для редактирования /etc/sudoers. При запуске sudo спрашивает у пользователя его собственный пароль, а не пароль root. Полноценный шелл можно получить с помощью "sudo -i".

Использование sudo лучше (безопаснее) открытия сессии root, по следующим причинам:

o Нет необходимости в пароле root (sudo запрашивает пароль текущего пользователя).

o По умолчанию команды выполняются от имени обычного пользователя (не привилегированного), что позволяет избежать ошибок. От имени root выполняются только команды с префиксом sudo.

o Проверка/запись: когда выполняется sudo, записывается имя пользователя и исполняемая команда. Аудит кароч...

 

НАЗНАЧЕНИЕ: повышение привилегий, запуск процессов от имени других пользователей

 

Г) Здесь необходимо сказать всю информацию из А, поэтому повторюсь

Как говорил Горшенин в UNIX все является файлом.

В Unix каждому файлу соответствует набор прав доступа, представленный в виде 9-ти битов режима. Он определяет, какие пользователи имеют право читать файл, записывать в него данные или выполнять его. Вместе с другими тремя битами, влияющими на запуск исполняемых файлов, этот набор образует код режима доступа к файлу. Двенадцать битов режима хранятся в 16-битовом поле индексного дескриптора вместе с 4-мя дополнительными битами, определяющими тип файла. Последние 4 бита устанавливаются при создании файлов и не подлежат изменению.

Существует три пути управления доступом к файлу или каталогу. Было определено, что каждый файл должен иметь владельца (owner), группового владельца (group owner), а также может потребоваться доступ для всех остальных пользователей (everyone).

flag user group other

# rwx rwx rwx

 

Флаг типа (flag) может быть одним из следующих:

Флаг Описание

- Отсутствие флага

l«л» Символическая ссылка (symbolic link)

d Директория (directory)

b Блочное устройство (block device)

c Символьное устройство (character device)

p Канал, устройство fifo (fifo device)

s Unix сокет (unix domain socket)

 

OCT BIN Mask Комментарий

0 000 - - - отсутствие прав

1 001 - - x права на выполнение

2 010 - w - права на запись

3 011 - w x права на запись и выполнение

4 100 r - - права на чтение

5 101 r - x права на чтение и выполнение

6 110 r w - права на чтение и запись

7 111 r w x полные права

Для назначения обычных прав используются три восьмеричных цифры (9 битов). Первая цифра определяет права для владельца файла, вторая - права для основной группы пользователя, третья - для всех остальных пользователей. Так, например, чтобы задать права на файл всем и вся, нужно установить права 777 (rwxrwxrwx). Существуют также специальные биты, такие как SUID, SGID и Sticky-бит. Они влияют на запуск файла. При их применении необходимо использовать не три восьмеричных цифры, а 4. Зачастую, в различной технической литературе права обозначаются именно 4-мя цифрами, например 0744.

Чем отличаются бит исполнения в случае файла и в случае каталога: бит исполнение для каталога означает, что в него можно перейти, а для файла что его можно исполнить.

При нормальных условиях исполняемый файл выполняется от имени вызвавшего его пользователя, то есть имеет те же самые привилегии или ограничения, что и пользователь. Однако если установить у исполняемого файла специальный атрибут, называемый SUID (Set User ID), то независимо от того, кто запускает программу, эта программа всегда будет выполняться от имени своего владельца.

Когда речь заходит о программах с атрибутом SUID, то, как правило, подразумеваются программы, выполняемые от имени суперпользователя, поскольку таково наиболее распространенное использование этого атрибута. Как правило, этот атрибут устанавливается для того, чтобы обычный пользователь мог запускать программы, которым для выполнения их функций необходимы привилегии суперпользователя.

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

Запущенный из этого файла процесс получит исполнительный идентификатор владельца (EUID) файла вместо идентификатора владельца процесса-родителя, благодаря чему UID процесса сохраняет информацию о том, кто на самом деле запустил программу.

Рассмотрим пример применения бита SUID. В системе любой пользователь может поменять себе пароль. Новый пароль записывается в файл /etc/shadow:

-rw-r----- 1 root shadow 500 2005-03-02 17:14 /etc/shadow

Как видно из прав доступа файла shadow, право на запись имеет только суперпользователь root. То есть другие пользователи системы не имеют права изменять содержимое этого файла, поэтому они не имеют права на изменение пароля. Но ведь каким-то образом им удается изменить свой пароль!

Для изменения пароля используется программа passwd.

-rws--x--x 1 root bin 37880 2004-06-21 23:20 /usr/bin/passwd*

Обратите внимание на символ s, который стоит вместо x в правах хозяина файла. Наличие этого символа говорит о том, что у этого файла установлен бит SUID. А это значит, что программа будет выполняться с правами пользователя, которому принадлежит файл — с правами пользователя root! Root имеет право на запись в файл shadow, и именно поэтому обыкновенный пользователь может изменить свой пароль.

В современных UNIX-системах предусмотрен и ещё один дополнительный атрибут — SetGID, бит подмены идентификатора группы. Этот механизм работает совершенно аналогично подмене идентификатора пользователя, с тем отличием, что процесс, запущенный из файла с атрибутом SetGID, получает эффективный идентификатор группы-владельца файла.

Бит SGID на исполняемые файлы устанавливается очень редко. Его основное назначение — организация работы группы пользователей над файлами одного проекта.

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

Особое значение имеют атрибуты подмены идентификатора (SetUID и SetGID), установленные на каталогах — для каталогов тоже используются права на исполнение, хотя и имеют другой смысл, чем у исполняемых файлов. Атрибут SetGID, установленный на каталоге, указывает, что файлы и подкаталоги, создаваемые внутри этого подкаталога любыми процессами, будут получать тот же идентификатор группы, что и сам каталог. Причем подкаталоги будут также наследовать атрибут SetGID. Такой механизм используется для организации общих каталогов, файлы в которых должны быть доступны на равных условиях группе пользователей. Атрибут SetUID, установленный на каталоге, просто игнорируется.

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

Разделяемые каталоги

Право на запись для каталога трактуется как возможность создания и удаления файлов в нём, а также возможность изменения атрибутов файлов (например, переименование или удаление). При этом субъекту не обязательно иметь права на запись для этих файлов, поскольку и переименование и удаление файла затрагивают только сам каталог.

Таким образом, из своего каталога пользователь может удалить любой файл. Часто возникает ситуация, когда каталог нужно использовать совместно — в этом случае необходимо разрешить запись в него либо группе пользователей, либо всем пользователям (например, общесистемный каталог для временных файлов). А если запись в каталог разрешена всем, то любой пользователь сможет удалить в нём любой файл. Для избежания этой проблемы был добавлен специальный атрибут — sticky bit. При установке этого атрибута пользователь, имеющий доступ на запись в этот каталог, может изменять только принадлежащие ему файлы.

ПРИМЕР: drwxrwxrwt 5 root root 4096 2005-06-05 17:28 /var/tmp/

Обратите внимание на символ t в правах доступа для всех остальных пользователей системы. Он означает, что у директории установлен stiky-бит.

ДОПОЛНИТЕЛЬНО КО ВСЕМУ:Ограничения базовой модели доступа и её расширения

Простота системы прав доступа UNIX приводит к некоторым ограничениям. К примеру, стандартными средствами UNIX невозможно создать такое положение вещей, когда одна группа пользователей могла бы только читать из файла, другая — только запускать его, а всем остальным файл вообще не был бы доступен. Другое дело, что такое положение вещей встречается нечасто.

Со временем в различных версиях UNIX стали появляться расширения прав доступа, позволяющие устанавливать права на отдельные объекты системы. Поначалу это были так называемые флаги — дополнительные атрибуты файла, не позволяющие, например, переименовывать его или удалять из него информацию при записи (можно только дописывать). Флаги не устраняют главного недостатка, зато их легко организовать без изменения файловой системы: каждый флаг занимает ровно один бит.

Многие современные файловые системы UNIX поддерживают также списки доступа (ACL), с помощью которых можно для каждого объекта задавать права всех субъектов на доступ к нему.

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