LinuxКурсы

4 — root_users_groups

Опубликовано

Группы и пользователи

В этой главе мы создадим пользователей и разграничим их возможности. Познакомимся с правами и маской доступа. Настроим группы wheel и nosu. И научимся выполнять действия от лица другого пользователя.


Root

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

Попробуйте открыть содержимое файла /etc/shadow от именя обычного пользователя.

less /etc/shadow

скорее всего вам выдаст предупреждение о том, что у вас не достаточно прав доступа.

/etc/shadow: Permission denied

Трудно быть богом

В чём разница между программистом и богом? Бог не считает себя программистом.

Настало время стать root пользователем. Введите команду

su - root

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

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

Пароли

Снова попробуйте открыть файл /etc/shadow

less /etc/shadow

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

user:hash:day1:5:day2:day3::
  1. user — имя пользователя
  2. hash — хэш пароля пользователя.
  3. day1 — сколько дней прошло с 1.01.1970 до последнего смены пароля
  4. 5 — Как часто пользователь может менять пароль (Прим: если стоит число 5, то раз в 5 дней пользователь может сменить пароль)
  5. day2 — сколько дней будет действовать аккаунт пользователя
  6. day3 — за сколько дней до удаления предупреждать пользователя
  7. day4 — сколько дней после истечения срока пароля, аккаунт будет действовать
  8. day5 — Сколько дней с 1.01.1970 аккаунт будет действовать.

Удаление хотябы одного символа из поля c хэшем пароля приведёт к тому, что пользователь не сможет пройти аутентификацию в системе, после чего установить новый пароль сможет только root. Если вы забыли root пароль, вам потребуется live-cd и немного времени или кто-то кто может запускать команды от рута.

Заметка:

Чтобы считать и вывести информацию о пользователе в развёрнутом виде из /etc/passwd используйте

chage -l user

Так же chage позволяет записать информацию в /etc/passwd

Группы

Тперь откроем файл, который хранит информацию о группах.

tail /etc/group 

Найдите группу одноимённую с вашим пользователем. Данная строка имеет следующий синтаксис

имя_группы:служебное поле:id_группы:

pam.d

Pluggable authetication modules Смените директорию на

cd /etc/pam.d

и посмотрите на список файлов ls -l. Среди всех файлов вы найдёте одноимённый файл настройки команды su. Откройте его командой

nano su

Найдите следующие строки

Первая область предлагает раскомментировать строку ниже, чтобы пользователя группы wheel могли запускать команду su без запроса пароля.

Вторая область предлагает раскомментировать, строку ниже, чтобы пользователя группы wheel могли запускать команду su, но будет запрашиваться пароль пользователя на которого происходит попытка переключения.

Давайте создадим пользователя harry и присвоим его группу wheel.

useradd -m -g wheel harry

-m создать домашнюю директорию -g добавить в группу.

Если группы wheel не существует, вам будет выдано соответствующее предупреждение. useradd: group ‘wheel’ does not exist. Все существующие группы можно увидеть в файле

less /etc/group

После создания пользователя сразу же задайте ему пароль командой

passwd harry

Если вы не зададите пароль, пользователь даже не сможет войти в систему.

Теперь добавим ещё одного пользователя, но не будем присваивать его группе. Не забудьте установить ему пароль.

useradd -m ron

Переходим в /etc/pam.d и открываем файл su

cd /etc/pam.d
nano su

раскоментировав строку показанную на картинке

Вы разрешите участникам группы wheel выполнять команду su без запроса пароля пользователя на которого вы переключаетесь. Сохраните файл.

Переключаемся между пользователями

Находясь в root режиме, введите команду id для вывода подробной информации. Смените пользователя на ron, командой.

su - ron

Опять введите команду id, убедитесь, что вы действительно действуете от имени ron.

Теперь, из под ron, введите команду su — root

su -

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

Обратите внимание на то, что система запрашивает у вас пароль.

Сменим пользователя на harry

su - harry
whoami

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

su - ron

И вот теперь мы не harry, а ron.

Добавляем уже существующего пользователя в группу wheel.

Давайте добавим пользователя ron в группу wheel. Зайдите в root и выполните такую команду.

usermod -a -G wheel ron

Если не поставить флаг -a, то весь список групп пользователя ron заменится на одну группу wheel

Теперь при вызове команды su, ron не должен вводить пароль.

Введите команду

less /etc/group

вы увидите, что к списку пользователей группы wheel добавилось имя пользователя ron. А где harry? Обратите внимание на id группы.

Откройте файл

less /etc/passwd

Найдите harry. 4-я позиция — это id группы пользователя, которая совпадает с id wheel. 3-я позиция — это id пользователя. В большинстве случаев они совпадают. Дело в том что пользователь не может существовать без группы. И поэтому, если в момент создания пользователя, ему не присвоена группа, создаётся одноимённая группа с id пользователя. Посмотрите к какой группе принадлежит ron. Группа может существовать без пользователя.

group=nosu

Добавим нового пользователя malfoy

adduser -m malfoy

Не забываем устанавливать пароль

  1. Добавим группу nosu
groupadd nosu
  1. Включим malfoy в группу nosu
usermod -a -G nosu malfoy

если не поставить -a, тогда все текущие группы будут заменены на nosu

  1. Откроем файл /etc/pam.d/su
nano /etc/pam.d/su
  1. Добавьте следующую строчку и сохраните файл. auth required pam_wheel.so deny group=nosu use_uid
  1. Смените пользователя на malfoy
su - malfoy
  1. Попробуйте сменить пользователя с malfoy на другого.
su - harry

Даже если вы введёте правильный пароль, вам выдаст предупреждение, о невозможности выполнить операцию

Password: 
su: Permission denied

Выйдите из под пользователя malfoy.

exit

sudo

Если команда su устанавливает текущего пользователя, то команда sudo выполняет команду от имени указанного пользователя, если ему эта команда доступна.

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

sudo -u ron whoami

вы пытаетесь выполнить команду whoami от имени пользователя ron находясь в своём аккаунте. В результате вы увидите надпись ron.

sudo -u malfoy whoami

то же самое, находясь под своим пользователем, мы выполняем команду whoami от имени malfoy.

Теперь посложнее.

sudo -u malfoy su ron

поскольку пользователь malfoy находится в группе, которой запрещено выполнять команду su, мы получим предупреждение «permission denied».

Если флаг -u не устанавливать, команда будет выполнена от имени root.

/etc/sudoers

Настройки утилиты sudo находятся в файле /etc/sudoers. Попробуйте открыть его командой

less /etc/sudoers

Скорее всего вы получите ошибку доступа. А теперь введите

sudo less /etc/sudoers

!!! ВАЖНО !!! Ни в коем случае не редактируйте этот файл обычным текстовым редактором. Лучше используйте утилиту visudo

visudo

не забудьте зайти в root режим. Утилита visudo не даст сохранить вам файл, если вы допустите в нём критические ошибки.

Отройте редактор visudo и под строкой %wheel ALL=(ALL:ALL) ALL Добавьте строку.

%gryffindor ALL=(ALL:ALL) NOPASSWD: /usr/bin/whoami

% — указывает на группу

первое ALL — указывает на имя компьютера (hostname) второе ALL — от имени какого пользователя можно выполнять программу третья ALL — какие команды можно запускать (перед запрещёнными командами ставить !)

Таким образом, мы всем пользователям группы gryffindor разрешили запускать утилиту whoami от имени любого пользователя, без запроса пароля. Осталось создать группу gryffindor.

groupadd gryffindor

Взгляните на файл /etc/group

tail /etc/group

в него добавилась информация о новой группе и автоматически присвоился id.

Добавим harry и ron в группу gryffindor.

usermod -a -G gryffindor harry
usermod -a -G gryffindor ron

Убедимся, что harry и ron состоят в gryffindor.

tail /etc/group

Смените пользователя на ron или harry и попытайтесь выполнить команду

sudo -u malfoy whoami

Команда успешно выполнится, но при этом все остальные команды будут выполняться только по запросу пароля. Если же вы войдёте под пользователем malfoy, то не сможете выполнить ни одну команду, потому-что по умолчанию linux запрещает выполнение команд одними пользователями из под других пользователей (кроме пользователей группы root).

чтобы посмотреть что позволяет сделать команда sudo текущему пользователю введите команду sudo -l

Check-point

  • убедитесь, что малфой не может изменять файл /etc/passwd.
nano /etc/passwd

Файл откроется, но он будет недоступен для записи.

А теперь попробуйте открыть тот же файл через суперпользователя

sudo nano /etc/passwd

На этот раз вы получите предупреждение:

malfoy is not in the sudoers file. This incident will be reported.

Мы видим предупреждение, что зафиксирована попытка неавторизированного входа. Историю действий команда sudo записывает в лог /var/log/secure

sudo tail /var/log/secure
  • Суперпользователем добавим пользователя malfoy в файл /etc/sudoers, но c правом редактировать только один файл /etc/resolv.conf (На самом деле без разницы какой файл вы разрешите редактировать, на конечный результат это никак не повлияет). Предоставьте пользователю malfoy запускать редактор nano для файла /etc/resolv.conf без запроса пароля. Найдите строчку root ALL=(ALL) ALL и под ней добавьте следующую строку.
malfoy ALL=(ALL) NOPASSWD: /bin/nano /etc/resolv.conf

malfoy — на имя какого пользователя пишется правило для команды sudo. Первая ALL — указывает на каких компьютерах (хостах) будет действовать это правило. Вторая ALL указывает от имени каких пользователей можно запускать команды через sudo. В строчке с root пользователем присутствует ещё и третья ALL — она говорит о том, какие команды можно запускать. В случае с malfoy мы указываем программу и файл.

  • Откройте новый терминал. Переключитесь на пользователя malfoy.
  • Убедитесь, что файлы из каталога /etc/ ,malfoy редактировать не может.(/etc/passwd, /etc/shadow, /etc/sudoers)
  • Теперь откройте файл, на который есть разрешение в файле sudoers командой sudo nano /etc/resolv.conf. Сортите его, но не сохраняйте.
  • Нажмите Ctrl+R и введите /etc/sudoers. Тем самым вы только что считали информацию с /etc/sudoers в текущий файл.
  • Замените строчку malfoy ALL=(ALL) NOPASSWD:/bin/nano /etc/resolv.conf на malfoy ALL=(ALL) NOPASSWD:ALL
  • Нажмите Ctrl+O , НО вместо resolv.conf введите sudoers. Подтвердите, что вы хотите переписать файл.
  • Наслаждайтесь. Теперь malfoy может запускать абсолютно любые программы через sudo без запроса пароля.
  • Откройте файл /etc/passwd. И в самый конец добавьте строку
volandemort:x:1098:1098::/home/malfoy:/bin/bash
  • Сохраните файл и введите в терминал команду
sudo passwd volandemort

Установите пароль.

  • Откройте файл group и добавьте нового пользователя volandemort в группу  wheel.

На этом казалось бы всё, но при попытке зайти в учётную запись volandemort

sudo su - volandemort

Вы получите ошибку, которая скажет, что у вас не достаточно прав для доступа к домашнему каталогу. Как решить данную проблему вы можете почитать в описании команды chmod .

Задачи

  • Сделать доступным редактор sumlime пользователю root и группе gryffindor
  • Сейчас каждый пользователь не имеет доступ к папке другого. Сделайте так, чтобы каждая папка была доступна для чтения основной группе владельца папки. Группа могла бы её только просматривать. Другим доступ полностью отключен.
  • Запретите harry использовать утилиту su без запроса пароля.
  • Добавьте несколько пользователей по своему усмотрению (hermionadambldor).

—Расширение

  • Найти следы пребывания другого пользователя в файловой структуре из архива.
  • Создайте группу hogwarts, в которую будут по-умолчанию добавляться все новые пользователи.
  • Каталог hogwarts c папками room переместите в /home и установите его домашним каталогом каждому новому пользователю, если не указать иначе при создании пользователя.

Hints

  • Если вы захотите удалить пользователя, используйте команду userdel -r username
  • Для редактирования пользователя используйте usermod
  • Для работы с группами используется утилита groupmod
  • Конфигурационные файлы настроек при добавлении пользователя
    1. /etc/login.defs — общий файл настроек утилит, работающих с пользователями и группами
    2. /etc/default/useradd — файл настройки утилиты useradd
  • Файлы которые будут добавлены в домашнюю дирректорию /etc/skel
  • Для редактирования /etc/passwd используйте vipw
  • /etc/shadow используйте vipw -s
  • /etc/group -> vigr

Вам так же может пригодиться

Добавить комментарий

Ваш адрес email не будет опубликован.