Debian дать пользователю права root: Root Права — Как Дать Пользователю Права Root — Linux
Root Права — Как Дать Пользователю Права Root — Linux
Из этой статьи вы узнаете, как создать пользователя в Linux с правами root и как дать привилегии root уже существующему пользователю.
Это можно легко сделать, изменив UID
(id пользователя) и GID
(id группы) в файле /etc/passwd
.
Также вы узнаете, как добавить пользователя в группу root и как удалить пользователя с root правами.
Должен предупредить, что это плохая идея давать обычному пользователю root полномочия и иметь несколько суперпользователей вне тестового окружения крайне не рекомендуется.
Внимание: Давать root права другому пользователю очень опасно, так как этот пользователь получает возможность делать абсолютно все, что в свою очередь может доставить немало неприятностей, если его аккаунт будет взломан.
Проверьте Настройки SSH Сервера: Если вы запретили пользователю root подключаться по SSH, установив PermitRootLogin no
в /etc/ssh/sshd_config
— вы не сможете зайти на сервер, если у вашего пользователя будет UID 0
.
Warning: Ознакомьтесь с комментариями под этой статьей и НЕ ВЫПОНЯЙТЕ ПРИВЕДЕННЫЕ НИЖЕ КОМАНДЫ без понимания того, что вы делаете и к каким последствиям это может привести!
Дать Root Права Новому Пользователю
Допустим вам необходимо создать нового пользователя и дать ему доступ на сервер с root правами.
Чтобы создать пользователя с абсолютно теми же правами что и пользователь root, мы должны назначить ему тот же ID пользователя, что у root (UID 0
) и тот же ID группы ( GID 0
).
Используйте следующие команды, чтобы создать нового пользователя john
, дать ему root права и установить пароль:
$ sudo useradd -ou 0 -g 0 john $ sudo passwd john
Дать Root Права Существующему Пользователю
Дельный Совет: Расставьте все точки над «i» в вопросах о правах доступа к файлам и папкам в Linux! Читать далее →
Допустим у вас уже есть какой-то пользователь john
, которому вы хотите дать root права:
$ grep john /etc/passwd john:x:1001:1001::/home/alice:/bin/sh
Для этого необходимо открыть файл /etc/passwd
, найти этого пользователя и изменить его UID
и GID
на 0
:
$ grep john /etc/passwd john:x:0:0::/home/john:/bin/sh
Добавить Пользователя в Группу Root
Если вы только хотите добавить пользователя john
в группу root, без предоставления ему всех привилегий пользователя root, выполните следующую команду:
$ sudo usermod -a -G root john
Удалить Пользователя С Root Правами
Дельный Совет: Подключайтесь на удаленный Linux сервер без ввода пароля! Читать далее →
У вас не получится просто взять и удалить второй root аккаунт с еще одним UID 0
с помощью команды userdel
:
$ sudo userdel john userdel: user john is currently used by process 1
Перед тем как удалять такого пользователя, необходимо в файле /etc/passwd
изменить его UID 0
.
Например, измените:
john:x:0:0::/home/john:/bin/sh
на что-то вроде:
john:x:1111:0::/home/john:/bin/sh
Теперь вы сможете удалить пользователя john
командой userdel
:
$ sudo userdel john
Debian вход под root
Translation(s): العربية – English – Español – Français – Italiano – Русский – Svenska – 简体中文
?Discussion
Root — специальный аккаунт в Debian, владелец которого имеет право на выполнение всех без исключения операций. Root также известен как суперпользователь и администратор. Домашняя папка /root.
Пароль
Во время установки, вас спросят, хотите ли вы использовать аккаунт root или нет.
Если вы хотите (по умолчанию), вам будет предложено выбрать сложный пароль для root. Используйте надёжный!
Если нет, аккаунт root будет выключен и пароль первого созданного пользователя будет использоваться для административных задач.
Использование привилегий root
- В Gnome : /Приложения/Стандартные/Root Terminal
В терминале : вы можете использовать su (или gksu) чтобы изменить свой идентификатор на root.
Тем не менее, рекомендуется настроить и использовать sudo (или gksudo) для выполнения нужной команды.
При смене обычного пользователя на root, ваша строка изменится с user@mypc:
$ на root@mypc:/home/user# .
Чтобы узнать от какого пользователя вы работаете, выполните whoami.
Всё о Интернете, сетях, компьютерах, Windows, iOS и Android
Как в Ubuntu войти как root-пользователь
По умолчанию в операционной системе Ubuntu учетная запись root не включена во время установки, соответственно далее пользователю не предлагается создать пароль root. Вместо этого создаётся обычная учетную запись пользователя, но с привилегиями sudo. То есть, для выполнения каких-либо команд с правами рута, необходимо запускать их вместе с командой sudo. Это не всегда удобно! Сейчас я расскажу как зайти под Root в Ubuntu или дать пользователю права рута. Существует несколько вариантов и мы рассмотрим каждый из них!
Примечание: Перед тем, как включить пользователя root в Убунту, Вы должны понимать всю опасность этого для неопытного пользователя. Выполняя команды от его имени, Вы можете легко и просто, буквально за несколько команд, привести операционную систему в нерабочее состояние.
Даём root-права пользователю
Первый и самый простой вариант позволяет не вводить постоянно команду sudo при каждом вводе команды, которую надо выполнить в привилегированном режиме. Для перехода в полный режим рута введите такую команду:
После этого Вы перейдёте в привилегированный режим суперпользователя Убунту.
Есть и второй вариант:
В этом случае домашний каталог не сменится на /root, а останется пользовательский. Как правило, этот вариант удобнее.
Как включить рута в Ubuntu
Вы всегда можете включить корневую учетную запись root в Ubuntu, задав ей пароль с помощью команды passwd. Но чтобы запустить команду passwd для учетной записи root, вам нужны права sudo.
Мы можем включить корневую учетную запись Ubuntu, задав ей пароль с помощью команды passwd. Но чтобы запустить команду passwd для учетной записи root, вам нужны права sudo.
Откройте терминал Ubuntu и выполните команду, чтобы убедиться, что вы являетесь членом группы администраторов:
Если у вас есть соответствующие права, то вы можете установить пароль root с помощью следующей команды:
Сначала система запросит ввод Вашего собственного пароля, чтобы подтвердить, что у вас есть права sudo.
После этого, команда passwd предложит вам ввести новый пароль для учетной записи root. Это делается дважды. Теперь вы можете войти в систему как пользователь root с помощью команды:
Далее последует запрос запроса пароля — введите пароль для root.
Как зайти под root в Ubuntu Desktop GUI
Если вы хотите зайти в систему как пользователь root не в консоли, а на графическом рабочем столе Ubuntu, тогда вам нужно выполнить несколько дополнительных шагов после включения пользователя root:
Откройте фаил /etc/gdm3/custom. conf . Здесь Вам надо будет добавить AllowRoot = true в блоке [security]. Вот так:
Затем откройте файл /etc/pam.d/gdm-password и найдите такую строку:
Закомментируйте её, поставив знак # перед ней:
Далее перезагрузите компьютер. Когда он перезапустится и появится экрану входа в систему — кликните на ссылку «Нет в списке?». Остаётся лишь ввести root в поле username и указать пароль для суперпользователя. Вот и всё!
Как вы знаете, Linux очень серьезно относится к управлению пользователями и предоставлению им прав на работу с системой. Обычный пользователь может записывать файлы только в свой каталог и каталог /tmp/. Также есть возможность читать некоторые файлы в корневой файловой системе. Но вы не можете устанавливать программы, ведь для этого нужно право на запись, не можете изменять атрибуты файлов, не можете запускать сервисы, не можете читать некоторые файлы логов и еще много чего не можете.
В Linux управлять корневой файловой системой и создавать там файлы имеет право только пользователь root.
В этой статье мы рассмотрим какие программы нужны для того, чтобы получить права root пользователя linux, как они работают, как выполнять программу с правами root от обычного пользователя и как запускать графические программы с правами root. А также выясним что такое sudo в чем разница su или sudo.
Права суперпользователя в Linux
Очень долго перечислять чего не может обычный пользователь Linux, проще сказать на что у него есть право, а именно при стандартной настройке полномочий для файлов в Linux, обычный пользователь может:
- Читать, писать и изменять атрибуты файлов в своем каталоге
- Читать, писать, изменять атрибуты файлов в каталоге /tmp
- Выполнять программы там, где это не запрещено с помощью флага noexec
- Читать файлы, для которых установлен флаг чтения для всех пользователей.
Если же нужно сделать что-то большее нам понадобятся права root пользователя linux. У root есть право делать все в вашей файловой системе независимо от того какие права установлены на файл.
Вход под суперпользователем
Чтобы войти под пользователем root можно переключиться в одну из виртуальных консолей, например, с помощью сочетания клавиш Ctrl+Alt+F1 и затем ввести логин root и пароль root пользователя.
Вы получите полноценное окружение root с возможностью выполнять все действия, но такой способ очень непрактичный, так как вы теряете все преимущества использования графического интерфейса.
Можно поступить полностью противоположным путем, ввести логин root и его пароль в графическом менеджере входа, чтобы окружение рабочего стола работало от имени root, и мы получаем все права root linux, но такой вариант крайне не рекомендованный, и очень опасный, вы можете случайно повредить всю систему. Поэтому этот способ был отключен во многих менеджерах входа.
Переключение на суперпользователя в терминале
Теперь мы подошли к более интересному и практичному. С помощью специальных утилит вы можете переключить текущий эмулятор терминала в окружения суперпользователя и выполнять все следующие команды не от своего имени, а от его, таким образом, дав программе права root linux. Для этого существует утилита su. Вообще говоря, эта утилита позволяет не только переключаться на пользователя root но и на любого другого пользователя, но по умолчанию используется именно root. Рассмотрим ее подробнее. Команда su linux имеет следующий синтаксис:
$ su опции пользователь
Вот ее основные опции:
- -c, –command – выполнить команду
- -g, –group – установить основную группу пользователя (только для root)
- -G –supp-group – дополнительные группы пользователя (только для root)
- -, -l, –login – режим входа, будут очищены и инициализированы с учетом нового пользователя все переменные окружения, а также изменен домашний каталог
- -p, –preserve-environment – сохранить переменные окружения
- -s, –shell – задать оболочку для входа
- –version – отобразить версию программы.
Теперь немного поэкспериментируем, чтобы понять как работает команда su linux.
Сначала выполним su без параметров, но для начала создадим переменную окружения, чтобы проверить как с ними обходится эта команда:
Теперь смотрим что получилось:
whoami
$ pwd
$ echo $VAR
$ echo $PATH
$ exit
Из этих команд мы видим, что теперь мы пользователь root, но домашней директорией считается директория нашего предыдущего пользователя и наша переменная не сохранилась также изменилась переменная PATH, теперь там добавлен путь /sbin.
Теперь используем вход в режиме логина:
И повторим ту же комбинацию:
whoami
$ pwd
$ echo $VAR
$ echo $PATH
$ exit
Та же ситуация, только на этот раз изменена ко всему еще и домашняя директория на директорию root. Но мы можем сохранить наши переменные окружения, если это нужно, для этого есть опция -p:
Как видите, наша переменная осталась. Вы также можете переключится на любого другого пользователя. Например:
Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, Debian, OpenSUSE, ArchLInux, Gentoo и т д. Но в Ubuntu, как дистрибутиве для начинающих вход под пользователем root отключен. Это сделано потому, что это тоже не очень безопасно, вы можете забыть что выполняете команду от root и что-то натворить в системе. Поэтому переходим к следующей программе.
Получение прав root без переключения
Чтобы реализовать максимально безопасный интерфейс для работы с правами суперпользователя в Linux была разработана команда sudo. Давайте рассмотрим что такое sudo. Эта команда пишется перед каждой командой, которую нужно выполнить от имени суперпользователя, и для ее выполнения нужно ввести пароль уже не root, а всего лишь вашего пользователя. Так же, как и в предыдущей, в этой утилиты есть свои опции. Сначала рассмотрим синтаксис:
$ sudo опции команда
- -b – выполнять запускаемую утилиту в фоне
- -E – сохранить переменные окружения
- -g – запустить команду от группы
- -H – использовать домашний каталог
- -l – показать список полномочий в sudo для текущего пользователя
- -r – использовать для команды роль SELinux
- -s – использовать оболочку
- -u – запустить команду от имени пользователя, если не задано используется root
- -i – не выполнять команду, а войти в оболочку, эквивалентно su –
Вы можете выполнить те же эксперименты, только для этой команды, чтобы понять как использовать команду sudo. Например:
Использование sudo – это рекомендованный способ выполнять команды от имени суперпользователя в Linux. Так вы не забудете с чем имеете дело и меньше всего рискуете повредить систему. Но остался еще один нерешенный вопрос – как быть с графическими утилитами? Ведь команда sudo их не запускает, а запускать графическую оболочку от имени root небезопасно. Это мы и рассмотрим далее.
Графически приложения от имени суперпользователя
Для запуска графических приложений от имени суперпользователя существуют специальные утилиты. Они сохраняют все необходимые переменные окружения и полномочия. В KDE это команда kdesu, а в Gnome команда gksu.
Просто наберите gksu или kdesu, а затем нужную команду:
Эта команда запустит файловый менеджер KDE с правами суперпользователя. В Gnome это будет выглядеть вот так:
Программа запросит пароль, уже в графическом окне, а потом откроется файловый менеджер.
Выводы
Вот и все. Теперь вы знаете как получить права суперпользователя в Linux, знаете как использовать команду sudo и в чем разница sudo или su. Теперь программы, требующие дополнительных привилегий в системе, не вызовут у вас проблем. Если остались вопросы, пишите в комментариях!
Отказываемся от пароля root на стадии установки Debian buster
Продолжаем знакомиться с операционной системой Debian, в этом обзоре я попробую чуть более пристально взглянуть на программу установки операционной системы, а именно на её раздел — Настройка учётных записей пользователей и паролей, попробую отказаться от пароля root и продемонстрирую, к чему подобный шаг может привести. Эта демонстрация будет базироваться на Debian buster и его установочном образе netinst, впрочем, всё сказанное здесь будет актуально и для Debian stretch.
Как известно, программа установки Debian разделена не несколько разделов, один из разделов называется Настройка учётных записей пользователей и паролей — вполне логичное и объясняющее суть происходящего название. В этом разделе программа установки предоставляет возможность задать пароль пользователя root и создать одну дополнительную пользовательскую учётную запись. На первой вкладке этого раздела, где предлагается создать пароль пользователя root, у программы установки имеется следующее предупреждение, цитирую:
Пароль учётной записи суперпользователя не должен быть пустым, иначе она будет заблокирована, а настроенной в программе установки пользовательской учётной записи будет разрешено работать с правами суперпользователя через команду sudo.
Однажды Дебианычу стало интересно, а что же получится в итоге, если пароль root в программе установки оставить пустым? Давайте посмотрим… Запускаю программу установки Debian buster, начинаю устанавливать операционную систему и на соответствующем этапе оставляю поля для введения пароля root пустыми, нажимаю Enter или кнопку «Продолжить».
Программа установки предложит создать новую учётную запись пользователя, ввести имя.
Ввожу и нажимаю Enter или кнопку «Продложить», программа установки предложит задать пароль для нового пользователя.
Задаю пароль и повторяю ввод в дополнительном поле, нажимаю Enter. Программа установки продолжит запрашивать необходимые для установки операционной системы данные, будет произведена разметка диска, выбор точек монтирования, выбор программного обеспечения и все остальные действия, вплоть до установки системного загрузчика. А после этого, на стадии завершения, когда производится настройка учётных записей пользователей и паролей…
Дебианыч замечает в прогресс-баре распаковку и установку программы sudo.
Программа установки завершит свою работу и предложит перезагрузить компьютер. После перезагрузки вхожу в систему с заданным именем пользователя и пытаюсь получить права суперпользователя root при помощи команды sudo.
Успех! Обращаю внимание, что для получения прав суперпользователя был запрошен и введён пароль пользователя debianeach. Таким образом, я констатирую факт, что, если на стадии установки операционной системы Debian отказаться от пароля root, то автоматически будет установлена и настроена программа sudo, а первый созданный в системе пользователь станет sudoer-ом и получит привилегии выполнять программы с правами суперпользователя с вводом собственного пароля посредством sudo.
Некоторые начинающие пользователи считают, что в этом случае root в системе отсутствует. Это заблуждение, root в системе присутствует всегда, просто в данном случае у него не будет пароля, и поэтому не будет возможности войти в систему root-ом. Но при этом программа sudo даёт возможность получить полноценную
Как Сбросить Пароль в Linux Debian Ubuntu LinuxMint
Как сбросить пароль в linux Debian и производных. Этот вопрос рассмотрим сегодня. Не только системные администраторы сталкиваются с проблемами забытых паролей. Ранее, в этой статье, я уже рассказывал как сбросить пароль в системах windows. Сегодня будем сбрасывать или как некоторым удобнее считать, взламывать пароль любого пользователя в линукс.
Этот вариант подходит для большинства дистрибутивов сделанных на базе дебиан. Например Ubuntu (со всеми производнимы, такие как Xubuntu, Kubuntu и тп), LinuxMint и тп.
После запуска компьютера, в момент отображения вариантов загрузки системы, нажмите клавишу «e». Что бы открыть для редактирования вариантов загрузки grub. Если у загрузочное меню не отображается, как в Linux mint, то в момент начала загрузки нажмите и удерживайте клавишу «Shift».
- Ознакомьтесь с предложением, предоставляет молниеносные скорости и не регистрирует активность пользователей Лучший Сервис VPN
- Один из лучших севрвисов хотя и не дешевый. Множество функций безопасности, поддержка P2P и стримов Сервис NordVPN
Найдите командную строку ядра. Она начинается со слова «linux» и содержит имя файла ядра и параметры ядра. В меню перемещайтесь с помощью курсорных клавиш. Найдите командную строку ядра. Она начинается со слова «linux» и содержит имя файла ядра и параметры ядра.
Надите в строке буквы «ro», они обозначают, что файловая система смотрирована только для чтения (read only). И замените их на «rw» (read/write), чтение и запись. Что бы можно было делать изменения. В конец строки допишите:
Нажимаем клавишу «f10». Запустится командная строка. Что бы изменить пароль любому пользователю системы в том числе и суперпользователю (root) в debian дайте команду:
passwd имя_пользователя
passwd имя_пользователя |
Например, что бы изменить пароль пользователя «vasiliy», команда должна быть такой:
Если нужно сбросить пароль рута укажите в качестве имени пользователя — root.
После запроса — «Enter new UNIX password:» укажите новый пароль (учтите, что никаких сиволов отображаться не будет).
И подтвердите пароль указав его еще раз после запроса — «Retype new UNIX password:». После чего нажмите «Enter».
При успешной смене пароля будет сообщение, что — «password updated successfully»(пароль успешно обновлен). Перезагрузите систему командой «reboot -f» и входите с новым паролем. Либо можно задать команду «exec /sbin/init» и нажать «Enter». Загрузка продолжится как будто никаких параметров не редактировалось.
Если забыли указать параметры «rw». То потребуется перемонтировать корневую файловую систему для чтения и записи. Для этого укажите команду «mount -o remount, rw /» После того как система перемонтировалась, можно менять пароль.
«Проверить можно командой «grep ‘\W/\W’ /proc/mounts». В выводе должны присутствовать буквы rw
Посмотрите видеоролик — «Как сбросить пароль в linux Debian, Ubuntu, LinuxMint»:
Как восстановить доступ к Debian Linux в случае проблем с sudo или утратой root-пароля [Вики IT-KB]
unix-linux:debian:stretch:how-to-restore-root-access-to-debian-linux-if-sudo-does-not-work
Как восстановить доступ к Debian Linux в случае проблем с sudo или утратой root-пароля
В некоторых ситуациях может получиться так, что мы потеряем административный доступ к серверу на базе Debian GNU/Linux. Например, к такому исходу могут привести некорректные действия администратора по настройке механизма sudo (ошибки при правке файлов /etc/sudoers
и/или /etc/sudoers.d/*
) и, как следствие, получение ошибки «Username is not in the sudoers file» при любых дальнейших попытках использования sudo. Иногда бывают ситуации, когда локальный доступ к серверу есть, а данные административной учётной записи недоступны и требуется восстановить административный доступ к серверу.
Загрузка в recovery mode
В типичных ситуациях в Linux имеется режим восстановления Recovery Mode, который, как правило, доступен из загрузчика ОС. В этом режиме наша Linux-система доступна в режиме супер-пользователя root, и мы можем исправить в ней имеющиеся у нас проблемы, например внести корректировки в файлы sudo или добавить/изменить учётные данные локального администратора.
Для того, чтобы попасть в меню загрузки, в процессе запуска ОС Debian нажимаем кнопку Shift. В появившемся меню загрузчика GRUB выбираем расширенный режим загрузки:
Затем выбираем интересующее нас ядро Linux в режиме recovery mode…
Однако в случае с Debian, где супер-пользователь root в конфигурации по умолчанию выключен, мы можем получить сообщение о невозможности загрузки консоли восстановления «Cannot open access to console, the root account is locked»:
В таком случае мы можем прибегнуть к приёму изменения параметров загрузки ядра.
Нестандартная загрузка
В процессе загрузки в GRUB выбираем в списке ядер нужное нам ядро (режим recovery mode здесь уже не важен) и нажимаем «e» для редактирования параметров загрузки.
Находим строку начинающуюся с «linux …»
В конце строки меняем значение «ro
» на «rw
», а в самом конце строки дописываем вызов оболочки «init=/bin/bash
».
После чего для продолжения загрузки жмём F10
Теперь мы получили беспарольный root-доступ к нашему серверу. Здесь можно исправить имеющиеся у нас проблемы, например внести корректировки в файлы sudo. После внесения нужных правок система может быть загружена обычным образом (все сделанные нами ранее изменения в GRUB были временными).
Дополнительные источники информации:
Проверено на следующих конфигурациях:
Версия ОС |
---|
Debian GNU/Linux Stretch 9. 4 |
Автор первичной редакции:
Алексей Максимов
Время публикации: 13.06.2018 15:45
unix-linux/debian/stretch/how-to-restore-root-access-to-debian-linux-if-sudo-does-not-work.txt · Последнее изменение: 13.06.2018 16:28 — Алексей Максимов
Общие сведения о корневых пользователях и подсистеме привилегий
Учетные записи пользователей root в традиционных каталогах являются особенными, потому что они могут обходить контроль доступа и другие ограничения, а также есть некоторые виды операций, которые могут выполнять только пользователи root.
Это очень похоже на концепцию пользователей root в традиционных операционных системах UNIX. Однако могут быть случаи, когда обычному пользователю нужно делать что-то, что может делать только пользователь root.Если пользователям предоставляется root-доступ, они получают гораздо больше полномочий, чем им на самом деле нужно для выполнения своей работы, и системные администраторы должны надеяться, что они используют эти полномочия ответственно и не намеренно или непреднамеренно воздействуют на какую-либо другую часть системы. С другой стороны, пользователю может не быть предоставлен root-доступ, и он либо не сможет выполнять жизненно важную функцию, либо ему придется полагаться на одного из системных администраторов для выполнения задачи.
Solaris 10 и более поздние версии решают эту проблему в системах UNIX путем создания подсистемы привилегий (также называемой «управлением правами процесса»).Инженеры, разрабатывающие Solaris, осознали, что навязывать кому-либо права root только для выполнения одной конкретной задачи опасно и нежелательно. Например, то, что пользователю может потребоваться запустить процесс, который прослушивает порт ниже 1024, не означает, что он также должен иметь возможность обходить разрешения файловой системы, изменять настройки сетевого интерфейса или монтировать и отключать файловые системы. С помощью подсистемы привилегий в Solaris 10 можно предоставить пользователю только определенные возможности, которые им нужны, например, возможность связываться с привилегированными портами, не предоставляя им полный доступ root. Точно так же можно отнять привилегии, которые в противном случае могли бы быть доступны. Например, учетная запись, которая используется только для запуска определенного демона, не должна иметь возможность видеть процессы, принадлежащие другим пользователям в системе.
Примечание:
Администраторам
следует рассмотреть возможность использования системы Oracle Privileged Account Management для достижения наилучшего уровня безопасности.
Oracle Unified Directory также имеет подсистему привилегий, которая определяет отдельные возможности, которые могут понадобиться пользователям, и позволяет предоставить им необходимый уровень доступа.Обычным пользователям могут быть предоставлены привилегии, которых у них не было бы в противном случае, некоторые привилегии могут быть отобраны у пользователей root. Набор прав, определенных в настоящий момент на сервере каталогов, описан ниже:
Привилегии | Описание |
---|---|
байпас-acl | Позволяет пользователю обойти оценку контроля доступа |
изменить-acl | Позволяет пользователю вносить изменения в средства управления доступом, определенные на сервере |
чтение конфигурации | Позволяет пользователю иметь доступ для чтения к конфигурации сервера |
запись конфигурации | Позволяет пользователю иметь доступ для записи в конфигурацию сервера |
jmx-чтение | Позволяет пользователю читать значения атрибутов JMX |
jmx-write | Позволяет пользователю обновлять значения атрибутов JMX |
jmx-уведомление | * Позволяет пользователю подписаться на уведомления JMX |
LDIF-импорт | Позволяет пользователю запрашивать задачу импорта LDIF |
LDIF-экспорт | Позволяет пользователю запрашивать задачу экспорта LDIF |
бэкэнд-бэкап | Позволяет пользователю запрашивать внутреннюю задачу резервного копирования |
бэкэнд-восстановление | Позволяет пользователю запрашивать внутреннюю задачу восстановления |
остановка сервера |
Запустить демон Docker от имени пользователя без полномочий root (режим без полномочий root)
Расчетное время чтения: 14 минут
Режим без полномочий root позволяет запускать демон и контейнеры Docker без полномочий root
пользователь, чтобы уменьшить потенциальные уязвимости в демоне и
среда выполнения контейнера.
Режим Rootless не требует прав root даже во время установки
демон Docker, если выполнены все необходимые условия.
Режим Rootless был представлен в Docker Engine v19.03.
Примечание
Режим Rootless — экспериментальная функция, имеющая некоторые ограничения. Подробнее см.
см. Известные ограничения.
Как это работает
В режиме без рута запускается демон Docker и контейнеры внутри пространства имен пользователя.Это очень похоже на режим userns-remap
, за исключением того, что
в режиме userns-remap
сам демон работает с привилегиями root,
в то время как в режиме без root и демон, и контейнер работают без
привилегии root.
В режиме без рута не используются двоичные файлы с SETUID
бит или файловые возможности,
кроме newuidmap
и newgidmap
, которые необходимы для разрешения нескольких
UID / GID, которые будут использоваться в пространстве имен пользователя.
Предварительные требования
Вы должны установить
newuidmap
иnewgidmap
на хосте.$ (whoami): / etc / subgid
тестовый пользователь: 231072: 65536
Подсказка для конкретного дистрибутива
Примечание. Мы рекомендуем использовать ядро Ubuntu.
Ubuntu
Никакой подготовки не требуется.
overlay2
драйвер хранилища включен по умолчанию
(Патч ядра для Ubuntu).Известно, что работает в Ubuntu 16.04, 18.04 и 20.04.
Debian GNU / Linux
Добавить ядро
.unprivileged_userns_clone = 1 от
до/etc/sysctl.conf
(или
/etc/sysctl.d
) и запуститеsudo sysctl --system
.Чтобы использовать драйвер хранилища
overlay2
(рекомендуется), запустите
sudo modprobe наложение allow_mounts_in_userns = 1
(Патч ядра для Debian, представленный в Debian 10).
Добавьте конфигурацию в/etc/modprobe.d
для сохранения.Известно, что работает с Debian 9 и 10.
overlay2
поддерживается только с Debian 10 и требуетmodprobe
конфигурация описана выше.
Arch Linux
- Добавьте
kernel.unprivileged_userns_clone = 1
в/etc/sysctl.conf
(или
/etc/sysctl.d
) и запуститеsudo sysctl --system
openSUSE
sudo modprobe ip_tables iptable_mangle iptable_nat iptable_filter
требуется.Это может потребоваться и в других дистрибутивах в зависимости от конфигурации.Известно, что работает с openSUSE 15.
Fedora 31 и выше
- Fedora 31 по умолчанию использует cgroup v2, которая еще не поддерживается средой выполнения containerd.
Запуститеsudo grubby --update-kernel = ALL --args = "systemd. unified_cgroup_hierarchy = 0"
использовать cgroup v1. - Вам может потребоваться
sudo dnf install -y iptables
.
CentOS 8
- Вам может потребоваться
sudo dnf install -y iptables
.
CentOS 7
Добавьте
user.max_user_namespaces = 28633
в/etc/sysctl.conf
(или
/etc/sysctl.d
) и запуститеsudo sysctl --system
.systemctl --user
по умолчанию не работает.
Запустите демон напрямую без systemd:
dockerd-rootless.sh --experimental --storage-driver vfs
Известно, что работает на CentOS 7.7. Старые выпуски требуют дополнительной настройки
шаги.CentOS 7.6 и более ранние версии требуют установки пакета COPR
vbatts / shadow-utils-newxidmap
.CentOS 7.5 и более ранние версии требуют запуска
sudo grubby --update-kernel = ALL --args = "user_namespace. enable = 1"
и перезагрузка после этого.
Известные ограничения
- Поддерживается только
vfs
graphdriver. Однако в Ubuntu и Debian 10
overlay2
иoverlay
также поддерживаются. - Следующие функции не поддерживаются:
- Cgroups (включая
docker top
, который зависит от cgroups) - AppArmor
- КПП
- Оверлейная сеть
- Открытие портов SCTP
- Cgroups (включая
- Чтобы использовать команду
ping
, см. Маршрутизация пакетов ping. - Чтобы предоставить доступ к привилегированным портам TCP / UDP (<1024), см. Предоставление привилегированных портов.
-
IP-адрес
, показанный в докере, проверяет
и размещен в пространстве имен внутри сетевого пространства имен RootlessKit.Это означает, что IP-адрес не доступен с хоста безnsenter
-ing в сетевом пространстве имен. - (
docker run --net = host
) также имеет пространство имен внутри RootlessKit.
Сеть хоста
Установить
Скрипт установки доступен по адресу https://get.docker.com/rootless.
$ curl -fsSL https://get.docker.com/rootless | ш
Убедитесь, что сценарий запускается от имени пользователя без полномочий root.
Чтобы установить Docker без рута от имени пользователя root, ознакомьтесь с инструкциями по установке вручную.Скрипт показывает необходимые переменные среды:
$ curl -fsSL https://get.docker.com/rootless | ш ... # Бинарные файлы Docker устанавливаются в / home / testuser / bin # ПРЕДУПРЕЖДЕНИЕ: dockerd не находится в вашем текущем PATH и не указывает на / home / testuser / bin / dockerd # Убедитесь, что следующие переменные среды установлены (или добавьте их в ~ / .bashrc): экспорт PATH = / home / testuser / bin: $ PATH экспорт PATH = $ PATH: / sbin экспорт DOCKER_HOST = unix: ///run/user/1001/docker. sock # # Для управления запуском службы докеров: # systemctl --user (start | stop | restart) докер #
Ручная установка
Чтобы установить двоичные файлы вручную без использования установщика, распакуйте
docker-rootless-extras- <версия>.tgz
вместе сdocker-
.tgz
с https://download.docker.com/linux/static/stable/x86_64/Если у вас уже есть демон Docker, запущенный как root, вам нужно только
извлечьdocker-rootless-extras- <версия> .tgz
. Архив можно распаковать
в произвольном каталоге, указанном в$ PATH
. Например,/ usr / local / bin
,
или$ HOME / bin
.Ночной канал
Чтобы установить ночную версию Docker без рута, запустите сценарий установки.
используяCHANNEL = "nightly"
:$ curl -fsSL https: // get.docker.com/rootless | КАНАЛ = "ночные" ш
Необработанные двоичные архивы доступны по адресу:
- https://master. dockerproject.org/linux/x86_64/docker-rootless-extras.tgz
- https://master.dockerproject.org/linux/x86_64/docker.tgz
Использование
Демон
Используйте
systemctl --user
для управления жизненным циклом демона:$ systemctl - докер запуска пользователя
Чтобы запустить демон при запуске системы, включите службу systemd и оставьте сообщение:
$ systemctl --user enable docker $ sudo loginctl enable-linger $ (whoami)
Чтобы запустить демон напрямую без systemd, вам нужно запустить
dockerd-без root.sh
вместоdockerd
:$ dockerd-rootless.sh --experimental --storage-driver vfs
Поскольку режим Rootless является экспериментальным, вам необходимо запустить
dockerd-rootless.sh
с--experimental
.Вам также понадобится
--storage-driver vfs
, если вы не используете Ubuntu или Debian 10
ядро. Вам не нужно беспокоиться об этих флагах, если вы управляете демоном с помощью
systemd, поскольку эти флаги автоматически добавляются в файл модуля systemd.Замечания о путях к каталогам:
- Путь к сокету по умолчанию равен
$ XDG_RUNTIME_DIR / docker.sock
.
$ XDG_RUNTIME_DIR
обычно имеет значение/ run / user / $ UID
. - По умолчанию для каталога данных установлено значение
~ / .local / share / docker
. - По умолчанию для каталога exec установлено значение
$ XDG_RUNTIME_DIR / docker
. - Для каталога конфигурации демона установлено значение
~ / .config / docker
(не~ /.докер
, который
используется клиентом) по умолчанию.
Прочие примечания:
- Скрипт
dockerd-rootless.sh
выполняетdockerd
под собственным пользователем, mount,
и сетевые пространства имен. Вы можете войти в пространства имен, запустив
nsenter -U --preserve-credentials -n -m -t $ (cat $ XDG_RUNTIME_DIR / docker. pid)
. -
docker info
показываетrootless
inSecurityOptions
-
docker info
показываетnone
asCgroup Driver
Клиент
Необходимо явно указать путь к сокету.
Чтобы указать путь к сокету с помощью
$ DOCKER_HOST
:$ экспорт DOCKER_HOST = unix: //$XDG_RUNTIME_DIR/docker.sock $ docker run -d -p 8080: 80 nginx
Чтобы указать путь к сокету с помощью контекста докера
$ docker context createless --description "для режима без root" --docker "host = unix: //$XDG_RUNTIME_DIR/docker.sock" безродный Успешно созданный контекст "без корневого" $ docker context использовать rootless безродный Текущий контекст теперь "лишен корней" $ docker run -d -p 8080: 80 nginx
Лучшие практики
Докер без рута в Докере
Чтобы запустить Docker без рута внутри Docker с root-доступом, используйте докер
:
-dind-rootless
image вместоdocker:
.-dind $ docker run -d --name dind-rootless --privileged docker: 19.03-dind-rootless --experimental
Образ
docker:
запускается от имени пользователя без полномочий root (UID 1000).-dind-rootless
Однако для отключения seccomp, AppArmor и монтирования требуется--privileged
.
маски.Открыть сокет API Docker через TCP
Чтобы открыть сокет Docker API через TCP, необходимо запустить
dockerd-rootless.sh
сDOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS = "- p 0.0.0.0: 2376: 2376 / tcp "
.$ DOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS = "- p 0.0.0.0:2376:2376/tcp" \ dockerd-rootless.sh --experimental \ -H tcp: //0.0.0.0: 2376 \ --tlsverify --tlscacert = ca.pem --tlscert = cert.pem --tlskey = key.pem
Открыть сокет Docker API через SSH
Чтобы открыть сокет Docker API через SSH, необходимо убедиться, что
$ DOCKER_HOST
установлен на удаленном хосте.$ ssh -l
'echo $ DOCKER_HOST' unix: /// run / user / 1001 / docker.носок $ docker -H ssh: // @ запустить ... Маршрутизация пакетов ping
В некоторых дистрибутивах
ping
не работает по умолчанию.Добавьте
net.ipv4.ping_group_range = 0 2147483647
в/etc/sysctl.conf
(или
/etc/sysctl.d
) и запуститеsudo sysctl --system
, чтобы разрешить использованиеping
.Доступ к привилегированным портам
Чтобы открыть привилегированные порты (<1024), установите
CAP_NET_BIND_SERVICE
в бинарный файлrootlesskit
.$ sudo setcap cap_net_bind_service = ep $ HOME / bin / rootlesskit
Или добавьте
net.ipv4.ip_unprivileged_port_start = 0
в/etc/sysctl.conf
(или
/etc/sysctl.d
) и запуститеsudo sysctl --system
.Ограничение ресурсов
В Docker 19.03 режим без root игнорирует связанные с cgroup флаги
docker run
, такие как
--cpus
,- память
,--pids-limit
.Однако вы все равно можете использовать традиционные
ulimit
иcpulimit
,
хотя они работают на уровне процесса, а не на уровне контейнера,
и может быть произвольно отключен контейнерным процессом.Например:
Изменение сетевого стека
dockerd-rootless.sh
использует slirp4netns
(если установлен) или VPNKit в качестве сетевого стека
по умолчанию.Эти сетевые стеки работают в пользовательском пространстве и могут иметь накладные расходы на производительность.
См. Документацию RootlessKit для получения дополнительной информации.По желанию, вы можете использовать
lxc-user-nic
вместо этого для лучшей производительности.
Чтобы использоватьlxc-user-nic
, вам необходимо отредактировать/ etc / lxc / lxc-usernet
и установите$ DOCKERD_ROOTLESS_ROOTLESSKIT_NET = lxc-user-nic
.Устранение неполадок
Ошибки при запуске демона Docker
[rootlesskit: parent] ошибка: не удалось запустить дочерний элемент: fork / exec / proc / self / exe: операция не разрешена
Эта ошибка чаще всего возникает, когда значение
/ proc / sys / kernel / unprivileged_userns_clone
установлено на 0:$ cat / proc / sys / kernel / unprivileged_userns_clone 0
Чтобы исправить эту проблему, добавьте
kernel.unprivileged_userns_clone = 1
в
/ etc / sysctl.conf
(или/etc/sysctl.d
) и запуститеsudo sysctl --system
.[rootlesskit: parent] ошибка: не удалось запустить дочерний элемент: fork / exec / proc / self / exe: на устройстве не осталось места
Эта ошибка чаще всего возникает, когда значение
/ proc / sys / user / max_user_namespaces
слишком мало:$ cat / proc / sys / user / max_user_namespaces 0
Чтобы исправить эту проблему, добавьте
user. max_user_namespaces = 28633
в
/ etc / sysctl.conf
(или/etc/sysctl.d
) и запуститеsudo sysctl --system
.[rootlesskit: parent] ошибка: не удалось настроить карту UID / GID: не удалось вычислить карту uid / gid: для пользователя 1001 («testuser») не найдены диапазоны subuid
Эта ошибка возникает, когда
/ etc / subuid
и/ etc / subgid
не настроены. См. Предварительные условия.не удалось получить XDG_RUNTIME_DIR
Эта ошибка возникает, если
$ XDG_RUNTIME_DIR
не задано.На хосте, отличном от systemd, вам нужно создать каталог, а затем установить путь:
$ экспорт XDG_RUNTIME_DIR = $ HOME / .docker / xrd $ rm -rf $ XDG_RUNTIME_DIR $ mkdir -p $ XDG_RUNTIME_DIR $ dockerd-rootless.sh --experimental
Примечание :
Вы должны удалять каталог каждый раз при выходе из системы.На хосте systemd войдите в систему, используя
pam_systemd
(см. Ниже).
Значение автоматически устанавливается на/ run / user / $ UID
и очищается при каждом выходе из системы.systemctl --user
терпит неудачу с сообщением «Не удалось подключиться к шине: нет такого файла или каталога»Эта ошибка чаще всего возникает при переключении с пользователя root на пользователя без полномочий root с помощью команды
sudo
:Доберись до рута! Как получить привилегии в Linux? — HackMag
Как вы помните (и это необходимо помнить каждому хорошему администратору), работать в Linux в качестве пользователя root — не лучшая идея.В идеальном мире вы должны использовать его только для настройки сервера, установки или обновления программного обеспечения, по большому счету, только в чисто административных целях. Проблема в том, что мы живем в реальном мире, который на самом деле весьма далек от идеального. Итак, ситуация довольно обычная и, как правило, из-за халатности, поэтому пользователям Linux ничего не оставалось, кроме как разобраться, как работает их программное обеспечение. Однако, если вы знаете, как работает система, и понимаете ее механизмы безопасности, вы никогда не будете работать как пользователь root.В любом случае, сегодня мы рассмотрим способы повышения полномочий с непривилегированного пользователя до корневого, в отличие от ситуации с Windows, где мы рассматривали способы работы с административными привилегиями. Итак, начнем.
По большому счету, мы можем разделить все способы получения привилегий суперпользователя в Linux на две категории. Сначала рассмотрим использование эксплойтов. В отличие от Windows, с ее механизмом автоматического обновления, пользователям Penguin приходилось вручную отслеживать и обновлять все исправления.Из-за этого вероятность столкнуться с не полностью пропатченной машиной Linux довольно высока. Что ж, какие преимущества этого метода следует выделить? Изначально большинство эксплойтов используют уязвимости в ядре, которые позволяют нам получить наивысшие привилегии. Найти подходящий эксплойт нетрудно, и я уверен, что вы знаете пару хороших ресурсов. Более того, чтобы использовать эксплойт, изредка необязательно знать все тонкости уязвимости, нужно просто его скомпилировать и запустить (может работать и без каких-либо настроек).В целом алгоритм работы выглядит так:
1. Определить версию ядра и дистрибутива
2. Получить список доступных инструментов для интеграции эксплойта
3. Установить эксплойт на целевую машину
4. Скомпилировать ( при необходимости) и запускаем
5. Пользоваться рутомИтак, теперь стоит рассмотреть каждый шаг более подробно.
Идентификация
По плану, в первую очередь нужно понять, что у нас есть, какой дистрибутив и версию ядра мы используем.Версию ядра мы можем получить с помощью известной команды
uname -a
или ее альтернатив. Чтобы получить информацию об используемом дистрибутиве, нам нужно проверить файл* -release
, который мы можем найти в каталогахи т.д.
(в зависимости от дистрибутива он может иметь разные имена, например:lsb-release
в Ubuntu ,redhat-release
в Red Hat / CentOS и так далее):Что ж, зная версии дистрибутива и ядра, мы можем перейти к следующему шагу и попытаться найти подходящую «отмычку».
Поиск эксплойтов
Как только мы получили всю необходимую информацию, мы можем начать поиск подходящего эксплойта. Первая мысль, которая приходит в голову, — зайти на exploit-db.com, тем не менее, есть и другие способы: 1337day, SecuriTeam, ExploitSearch, Metasploit, securityreason, seclists. В будущем у нас всегда будет Google, который, в конце концов, наверняка знает больше всех об эксплойтах.
Что ж, забегая вперед, скажу вам: иногда по каким-то причинам «отмычка» не может работать, и ее нужно приспособить к определенным условиям или вашим личным потребностям.В этом случае было бы здорово получить дополнительную информацию о нем, которую вы можете найти, например, здесь:www.cvedetails.com
packetstormsecurity.org/files/cve/[CVE]
cve.mitre.org/cgi-bin/cvename.cgi?name=[CVE]
www.vulnview.com/cve -details.php? cvename = [CVE]
Что ж, предположим, что вы нашли подходящий эксплойт, который предоставляет вам «вход-пропуск» в мир root.Все, что нам нужно сделать сейчас, это отправить его на целевую машину.
Доставка на дом
Итак, существует довольно много способов установить эксплойт на свое место, например, от хорошо известных cURL / wget, Netcat, FTP, SCP / SFTP, SMB до использования записей DNS TXT. Чтобы выяснить, какие инструменты у нас есть, нам нужно выполнить следующее:
find / -name wget
find / -name nc
find / -name netcat
find / -name tftp *
find / -name ftp
Предположим, мы нашли Netcat.Чтобы отправить файл с помощью Netcat, нам нужно запустить следующую команду на стороне хоста:
nc -l -p 1234> исходный файл
То есть проверяем порт 1234. Что касается отправляющей стороны, мы переходим к следующей команде:
nc -w 3 [назначение] 1234
В случае, если доставка выполняется из nix- в nix-system, значит, у нас есть стандартные утилиты, и мы можем ускорить процесс с помощью сжатия. Тогда команда будет выглядеть так:
NC -L -P 1234 | распаковать -c | tar xvfp — // для получения
tar cfp — / some / dir | компресс -c | nc -w 3 [назначение] 1234 // для отправки
В целом, остальные методы еще проще, поэтому мы не будем рассматривать использование wget, FTP и остальных известных методов.
прятки
Что ж, мы придумали, как поставить эксплойт, но как не выдать себя в процессе? Не сомневайтесь, если кто-то обнаружит эксплойт, ваша лазейка в ближайшее время будет закрыта. Поэтому размещать, компилировать и запускать его следует из какого-нибудь незаметного места. Например, файлы, начинающиеся с точки в каталогах Linux, являются скрытыми. Поэтому было бы логично использовать их для прикрытия своей деятельности. Точно так же вы можете разместить там код эксплойта
/ tmp /.Ничего не найдено / exploit.c
. Однако в этом случае вы должны проверить, настроен ли «tmp» без опции «noexec», чтобы вы могли запустить эксплойт оттуда (чтобы проверить его, используйте командуmount
).Настройка и запуск эксплойта
Как только эксплоит доставлен и размещен, его надо скорректировать. Как правило, эксплойты обычно пишутся на C или с использованием других языков сценариев, например Python / Perl / PHP. Наш постоянный читатель знает, что оставлять компилятор на сервере — не лучшее решение, поэтому обычно он «заархивирован».Если после вопроса о версии компилятора
gcc -v
bash вы получите командуgcc: command not found
bash, то вам «повезло», и вам нужно обойтись, а это значит, что вам нужно искать эксплойт на Python, Perl или скомпилируйте его на другой виртуальной машине с аналогичным программным обеспечением и версией ядра. После того, как вам нужно переместить исполнительный файл на целевой хост (однако мы не можем быть на 100% уверены, что эксплойт не упадет и не приведет к сбою системы, поэтому будьте осторожны здесь).Однако на практике в системе также должен существовать интерпретатор для одного из перечисленных выше языков. Так что сразу сдаваться не стоит, лучше попробовать все доступные методы:find / -name perl
find / -name python
find / -name gcc *
find / -name cc
Тут сложно придумать какие-то новаторские «рецепты».Все уже известно. Во-первых, нам просто нужно вовремя установить патчи. Второе — ограничить количество мест, которые могут быть использованы для запуска выполнения файла (например, папку «tmp» следует лишить такой возможности). Более того, вам следует реализовать какое-нибудь защитное решение, например grsecurity.
Вторая категория, которая должна быть выделена с точки зрения повышения полномочий, представляет собой методы, не связанные с использованием эксплойтов, но основанные на поиске файлов с неправильно установленными полномочиями.Как и в Windows, здесь тоже есть все входы и выходы, однако, по сути, это тот же процесс, который касается сбора и анализа данных. Обычно в самом начале мы стараемся искать файлы, доступные для чтения и записи.
найти / -пермь 2! -тип l -ls
На самом деле таких файлов может быть множество, и среди них можно найти что-то действительно интересное: данные конфигурации, источники сайтов и приложений, скрипты, запускаемые init или cron.Технически ситуация, когда файл открыт для чтения и записи, довольно распространена. Проблема возникает, когда пользователи, админы, скрипты начинают вносить «куриные» изменения в разрешениях. Вот почему при изменении разрешений старайтесь избегать использования
chmod 777
. А чтобы некоторые важные файлы не стали доступными для всех, периодически проводите аудит.Setuid + setgid
Согласно документации, Setuid и Setgid являются целями прав доступа, позволяющими запускать исполняемые файлы с правами владельца или группы исполняемых файлов (обычно это root).Такие исполняемые файлы, запущенные с повышенными привилегиями, могут получить доступ к более привилегированной информации. Например, в случае установки setuid на команду ls вы получите возможность просматривать содержимое каталога, в котором изначально у вас не было прав доступа, более того, в случае vim вы можете настраивать файлы.
Следовательно, если есть такие уязвимости, как переполнение буфера или внедрение команд в приложениях с установленными индикаторами setuid / setgid, то хакер может выполнить произвольный код с повышенными привилегиями.Поэтому следующим шагом будет поиск исполняемых файлов с такими индикаторами.
sudo find / -xdev (-perm 4000) -type f -print0 -exec ls -s {} \;
По сути, мы можем сделать это без sudo, это необходимо только для проверки каталогов, к которым у вас нет доступа.
Обычно есть три способа использовать такие исполняемые файлы позже.Во-первых, попытаться повысить привилегии с учетом программного и аппаратного обеспечения, предоставляемого приложением. Второй способ — найти публичный эксплойт и провести индивидуальную суету для обнаружения ошибок. В-третьих, это командная инъекция. Что ж, универсального решения не существует, все зависит от ситуации.
СУДО
Команда SUDO (замените пользователя и сделайте), позволяет пользователям делегировать ресурсы привилегий, продолжая регистрацию активности. Другими словами, пользователи могут выполнять команду под root (или другими пользователями), используя свои собственные пароли вместо паролей root.Правила, учитывающие принятие решения о предоставлении доступа, можно найти в файле
/ etc / sudoers
. Вы также можете поискать эту информацию в официальном руководстве и в Википедии. Сразу скажу, что этот файл тоже нужно как следует проверять, потому что довольно часто определенные приложения вносят в него какие-то изменения во время установки и не в лучшую сторону, если честно, в результате пользователи получают возможность повысить свои привилегии (статья на Наступательная охрана, объясняющая такую ситуацию).Путь
Так же, как и в Windows, мы можем повысить свои привилегии с помощью неправильно настроенных путей. Обычно это происходит с переменными среды пути (для просмотра используйте
printenv
). Посмотрели? Тогда скажите мне сейчас: что, если бы переменная окружения «PATH» начиналась бы с.
(.: / Bin: / usr / sbin….
)? Обычно пользователи, которые не хотят вводить еще два символа, делают это, другими словами, хотят, чтобы они активировали команду, подобную этой программе$
вместо$./ программа
. Добавляя «.» В «ПУТЬ», мы получаем возможность выполнять скрипты и файлы из рабочего каталога. Сделать это можно так:ПУТЬ =.: $ {ПУТЬ}
экспорт ПУТЬ
А теперь представим себе дальнейшую ситуацию, у нас есть два пользователя: Джо (хакер) и Боб. Джо знает, что у Боба есть sudo-привилегии для изменения паролей пользователей, включая пароль root.Более того, Боб ленив и поместил «.» В «ПУТЬ». Мудрый Джо пишет программу, которая будет менять пароль root, назовет ее ls и поместит в папку, в которую Боб любит заглядывать. Итак, теперь, когда Боб перейдет в папку и решит проверить содержимое файла, программа будет запущена, и пароль будет изменен. Итак, урок состоит в том, что мы всегда должны проверять переменные окружения на предмет наличия дингера и делать дальнейшие выводы.
- Никогда не используйте «.» В переменной «PATH»
- Если есть «.: // ‘
- LinEnum — это скрипт, который может сделать всю неприятную работу за вас, внося все настройки, описанные здесь, шпаргалка. По большому счету, он имеет около 65 различных операций проверки, начиная от получения информации о версии ядра и заканчивая поиском потенциально интересных файлов SUID / GUID. Кроме того, вы можете отправить сценарий блокировок, чтобы он выполнял поиск во всех конфигурациях и файлах журнала.Вы можете запустить проверку так:
./LinEnum.sh -k keyword -r report -e / tmp / -t
. После завершения сканирования вы получите подробный отчет, в котором наиболее интересные моменты будут выделены желтым цветом.Базовые опции LinEnum
- LinuxPrivChecker — Python-скрипт пригодится для поиска возможных вариантов повышения привилегий. Как правило, он выполняет все те же действия, например, проверяет привилегии, получает информацию о системе, тем не менее, самое крутое, что после завершения проверки он перечисляет эксплойты, которые можно использовать для повышения привилегий.Такой молодец :)!
LinuxPrivChecker Содержит огромное количество эксплойтов, которые регулярно обновляются из базы данных Exploit
- unix-privesc-check — Этот скрипт позволяет искать способы повышения привилегий не только в Linux, но и в Solaris, HPUX, FreeBSD. Он ищет ошибки конфигурации, которые позволили бы непривилегированному пользователю подняться вверх.
Для автоматизации процесса поиска слабых мест мы можем использовать следующие инструменты: