Как запустить программу в линукс с правами root

В Linux всегда есть суперпользователь по имени root . Это учетная запись суперадминистратора, которая может делать с системой все и вся. Он может получить доступ к любому файлу и запустить любую команду в вашей системе Linux.

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

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

Вам не нужны привилегии root для повседневных задач, таких как перемещение файла в домашний каталог, загрузка файлов из Интернета, создание документов и т. д.

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

Означает ли это, что вы не можете иметь root-права в Ubuntu или использовать систему с root-правами? Нет, у вас все еще есть root-доступ с помощью sudo (объяснено в следующем разделе).

Итог:
пользователь root слишком мощный, чтобы использовать его для обычных задач. Вот почему не рекомендуется использовать root все время. Вы все еще можете запускать определенные команды с root.

Как запускать команды от имени пользователя root в Ubuntu?

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

apt update
Reading package lists… Done
E: Could not open lock file /var/lib/apt/lists/lock — open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin — RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin — RemoveCaches (13: Permission denied)

Итак, как вы запускаете команды от имени пользователя root? Простой ответ — добавить sudo перед командами, которые необходимо запускать от имени пользователя root.

sudo apt update

Ubuntu и многие другие дистрибутивы Linux используют специальный механизм, называемый sudo. Sudo — это программа, которая контролирует доступ к запущенным командам от имени пользователя root (или других пользователей).

Судо на самом деле довольно универсальный инструмент. Его можно настроить так, чтобы пользователь мог запускать все команды как root. Вы можете настроить его для запуска только нескольких выбранных команд от имени пользователя root. Вы также можете настроить запуск sudo без пароля . Это обширная тема, и, возможно, я расскажу о ней подробнее в другой статье.

На данный момент вы должны знать, что при установке Ubuntu вам необходимо создать учетную запись пользователя. Эта учетная запись пользователя работает как администратор в вашей системе, и в соответствии с политикой sudo по умолчанию в Ubuntu она может запускать любую команду в вашей системе с правами root.

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

Вот почему, когда вы запускаете команду с помощью sudo, она запрашивает пароль пользователя, выполняющего команду sudo:

Как вы можете видеть в приведенном выше примере, пользователь user пытался запустить команду apt update с помощью sudo, и система запросила пароль для user.

Если вы новичок в Linux, вы можете быть удивлены тем, что, когда вы начинаете вводить пароль в терминале, на экране ничего не происходит. Это совершенно нормально, потому что в качестве функции безопасности по умолчанию на экране ничего не отображается. Даже звездочки (*). Вы вводите свой пароль и нажимаете ввод.

Итог:
чтобы запускать команды от имени пользователя root в Ubuntu, добавьте sudo перед командой.
При запросе пароля введите пароль своей учетной записи.
Когда вы вводите пароль на экране, ничего не видно. Просто продолжайте вводить пароль и нажмите Enter.

Как стать пользователем root в Ubuntu?

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

Команда sudo позволяет имитировать оболочку входа в систему root с помощью этой команды:

Вы заметите, что когда вы переключаетесь на root, командная строка оболочки меняется с $ (знак доллара) на # (знак ключа решетка).

Хотя я показал вам, как стать пользователем root, я должен предупредить вас, что вам следует избегать использования системы с правами root. В конце концов, это не рекомендуется по какой-то причине.

Вы можете использовать команду su для переключения пользователей в Ubuntu . Вы можете использовать его с sudo для временного переключения на пользователя root:

Если вы попытаетесь использовать команду su без sudo, вы столкнетесь с ошибкой su authentication failure.

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

Как включить пользователя root в Ubuntu?

К настоящему времени вы знаете, что пользователь root по умолчанию заблокирован в дистрибутивах на основе Ubuntu.

Читайте также:
Программа для нокиа обновления

Linux дает вам свободу делать с вашей системой все, что вы хотите. Разблокировка пользователя root — одна из таких свобод.

Если по каким-то причинам вы решили включить пользователя root, вы можете сделать это, установив для него пароль:

sudo passwd root

Опять же, это не рекомендуется, и я не буду поощрять вас делать это на домашней ОС. Если вы забыли пароль, вы не сможете снова изменить пароль root в Ubuntu .

Вы можете снова заблокировать пользователя root, удалив пароль:

sudo passwd -dl root

В конце…

Надеюсь, теперь вы немного лучше понимаете root концепцию. Если у вас все еще есть путаница и вопросы по этому поводу, дайте мне знать в комментариях. Я постараюсь ответить на ваши вопросы и, возможно, обновлю статью.

Свежие записи

  • Начало работы с Liquibase
  • Укрощение высокой загрузки ЦП cAdvisor
  • Понимание действий GitHub
  • Добавление собственных бегунов (GitHub Runers)
  • VPN, Proxy и Tor: сохранение анонимности в сети в 2022 году

Записи Архивов по месяцам

Рубрики

  • Active Directory (1)
  • Airflow (2)
  • Ansible (1)
  • Apache NiFi (3)
  • Apache Tomcat (1)
  • Apache Zeppelin (3)
  • Artifactory (1)
  • Astra Linux (4)
  • cadvisor (1)
  • CentOS8 (33)
  • CI/CD (8)
  • CMS (3)
  • Confluence (1)
  • Debian (6)
  • DNF (1)
  • DNS (1)
  • Docker (4)
  • ETL (2)
  • Fedora (1)
  • ftp (5)
  • GitHub (4)
  • GitLab (1)
  • Grafana (8)
  • InfluxDB (2)
  • InfluxDB 2.0 (1)
  • Linux (163)
  • liquibase (1)
  • MySql (7)
  • NextCloud (4)
  • Nginx (5)
  • Oracle Database (1)
  • OwnCloud (3)
  • Postgresql (7)
  • Prometheus (3)
  • Proxy (1)
  • RedHat (39)
  • SQLite (1)
  • SSH (4)
  • SVN (1)
  • Tor (1)
  • Ubuntu (24)
  • Ubuntu Studio (1)
  • VPN (2)
  • Web Panel (2)
  • Web Сервер (13)
  • Windows (24)
  • Zabbix (16)
  • Автоматизация обмена данными (3)
  • Анализ и Визуализация Данных (3)
  • Анализ Кода (1)
  • Анонимные ОС (4)
  • Антивирусы (1)
  • (4)
  • Виртуальные Машины (8)
  • Клиенты Удаленного Подключения (1)
  • Команды (7)
  • Менеджер Пакетов (2)
  • Облако (6)
  • Окружение рабочего стола (1)
  • Операционные Системы (184)
  • Почтовые Клиенты (4)
  • Программное Обеспечение (94)
  • Сетевое Хранилище (21)
  • Система Wiki (1)
  • Система управления версиями (9)
  • Системы Автоматизации Развертывания (7)
  • Системы Мониторинга (27)
  • Системы Управления Базами Данных (22)
  • Системы управления проектами (6)
  • Системы Управления Проектом (9)
  • Служба каталогов (2)
  • Средства Разработки (3)
  • Удаленное Подключение (11)

Источник: dataenginer.ru

Управление учетными записями в Linux. Часть 2. Не/правильная настройка доступа

В предыдущей статье мы рассмотрели вопросы хранения учетных данных в ОС семейства Линукс. Теперь перейдем к обсуждению вопросов правильной и не очень настройки прав доступа к различным объектам операционной системы.

Напомню основные моменты относительно учетных записей в Линукс: есть суперпользователь root (id=0), который может все и есть все остальные учетные записи (id от 500 или 1000), которые имеют ряд ограничений и по идее не могут нанести большого вреда системе.

Но на практике возможны различные ситуации, когда обычному пользователю необходимы административные права. Например, обычный пользователь не может прочитать файл с хэшами паролей /etc/shadow, но он может изменить свой собственный пароль с помощью команды passwd. Очевидно, что для внесения изменений в защищенный файл команда должна выполняться с правами суперпользователя. И таких примеров может быть довольно много.

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

su и sudo, когда хочется большего…

В процессе работы часто возникает необходимость в правах суперпользователя, например для установки программного обеспечения и выполнения привилегированных команд. Сейчас хорошей практикой является не использование для выполнения повседневных задач аккаунта root. Более того, многие современные Линуксы блокируют интерактивное использование этой учетки или как минимум запрещают работу под ней по протоколу ssh.

Команда su заменяет пользователя текущей оболочки shell на указанного, например su user1 заменит на пользователя user1. Естественно, при запуске su система запросит пароль того пользователя, на shell которого вы хотите переключиться. Далее происходит запуск нового экземпляра оболочки с указанными параметрами. Команда su позволяет не выходя из системы, без лишних манипуляций повышать возможности управления операционной системой или наоборот ограничивать их.

Вызов su без аргументов приведет к запуску оболочки root. Для возврата в оболочку основного пользователя, из под которого была вызвана команда su необходимо просто ввести exit.

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

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

Основное отличие двух команд на примере пользователя root: su переключает вас в аккаунт root и требует пароль root. Sudo запускает с привилегиями root одну команду — она не переключает вас в аккаунт суперпользователя и не требует отдельного пароля root. Исключение sudo -i.

Кстати, о паролях. При вводе sudo команда система запрашивает пароль текущего пользователя. Хотя возможен вариант, когда sudo выполняется без пароля, но об этом чуть позже. Запрос пароля делается для того, чтобы в случае, если посторонний получил доступ к незаблокированной консоли, он не смог выполнить ничего привилегированного.

Но даже ввод корректного пароля еще не гарантирует выполнение команды под root.

Дело в том, что для разрешения запуска команд по sudo пользователь должен быть внесен в специальный файл /etc/sudoers, содержащий настройки использования sudo. Для нас в плане настройки доступа наиболее интересен раздел, связанный с разрешенными пользователям командами:

Читайте также:
Dialink j2534 с какими программами работает

# User privilege specification

root ALL=(ALL:ALL) ALL

user2 ALL = (root) NOPASSWD: /usr/sbin/iftop

user2 ALL = (root) NOPASSWD: /bin/more

Если мы хотим разрешить пользователю запускать под sudo любые команды, то необходимо использовать ключ ALL, например

А если при этом мы еще и не хотим спрашивать пароль, то используем NOPASSWD

user3 ALL=(ALL) NOPASSWD: ALL

Аналогично, мы можем не спрашивать пароль при запуске конкретной команды

user2 ALL = (root) NOPASSWD: /bin/more

Но разрешение запуска любых команд это все-таки варианты настройки, которые можно использовать только в тестовой среде, в продуктиве необходимо выполнять гранулированные настройки, то есть разрешать выполнение только определенных команд

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

Поэтому учитывайте это обстоятельство при настройке /etc/sudoers. Разрешать всем все явно не нужно.

Права и SUID bit

Вернемся к приведенному ранее примеру со сменой пароля обычным пользователем с помощью команды passwd. Но для того, чтобы понять как выполняется этот трюк с доступом к привилегированному файлу мы немного поговорим о том, как в Линукс осуществляется доступ к файлам.

В стандартной модели доступа есть 3 вида прав, помимо специальных:

  1. чтение
  2. запись
  3. исполнение (для директорий прохождение через них)

Права на файлы определяются для пользователей из трех групп:

  1. для владельца
  2. для группы владельца
  3. для всех остальных

Для каждой операции выделены свои группы битов:

В зависимости от того, что разрешено, мы можем увидеть соответствующий набор значений:

Также права доступа можно представить в виде чисел, формируемых по следующему правилу:

Для того, чтобы пользователь не обладающий административными правами мог запускать приложения, требующие права root для своей работы (как в нашем примере с passwd) в Линукс предусмотрен специальный механизм — SUID (Set UID) bit. Данный бит позволяет выполнение программы с правами хозяина файла. Это ключевой механизм повышения прав в Unix системах. Особенности SUID программ в стандартных конфигурациях Linux:

  • Работают с полномочиями пользователя root.
  • Используются для выполнения безопасных привилегированных операций.
  • Используются для штатной смены идентификаторов пользователя: su, sudo, pkexec.
  • Программы учитывают идентификатор запустившего их пользователя и различные файлы конфигурации.

Для того, чтобы установить SUID бит необходимо воспользоваться следующей командой:

chmod u+s выполнимый_файл

в результате в выводе в правах будет отображаться буква s

Обратите внимание на то, что владельцем файла является root. Кстати же знакомая нам команда sudo тоже имеет SUID бит.

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

Ядро принимает решение, имеет ли этот процесс привилегию, просматривая EUID процесса. Потому что теперь EUID указывает на root — эта операция не будет отклонена ядром.

При самостоятельной установке SUID bit администраторам нужно быть особенно внимательными, так как некоторые утилиты имеют штатный функционал позволяющий запускать командную оболочку. О том как эксплуатировать подобные уязвимости мы подробно поговорим в следующей статье. Но прежде, чем разрешать какой-либо команде запускаться по sudo или устанавливать SUID bit я бы рекомендовал сначала прочитать man по данной команде, нет ли там ключика, позволяющего запускать shell.

Непутевый PATH

Переменная среды PATH предназначена для указания оболочке, где искать исполняемые файлы. То есть, благодаря PATH можно указывать только имя выполняемого файла без полного пути, а дальше уже ОС будет пытаться найти файл с таким именем по всем прописанным в переменной путям.

Но при не совсем корректном составлении списка путей в переменной PATH возможна ситуация, когда злоумышленник сможет разместить по одному из путей, указанных в PATH свой файл с таким же названием, как и легальное приложение. Но этот файл будет выполнен вместо легального приложения, так как путь к нему прописан в PATH раньше, чем путь к легальному приложению. Например, на скриншоте /usr/local/bin идет раньше, чем /usr/bin, поэтому если легальный файл лежит по второму пути, то злоумышленник может сохранить свой файл с таким же именем по первому и он будет выполнен вместо легального. Таким образом, злоумышленник имея доступ в каталоги прописанные в PATH может поместить свой выполнимый файл с тем же именем, и при выполнении, по сути, подменить легальный файл на свой. А учитывая, что файл могут пытаться запустить с правами суперпользователя злоумышленник в результате подмены может получить права root.

В этой статье мы рассмотрели основные моменты настройки прав доступа. Я сознательно не рассматривал никакие “хакерские фокусы”, то есть практические примеры эксплуатации ошибок в данных настройках, так как этому будет полностью посвящена следующая статья. Но основные рекомендации по безопасности можно дать уже сейчас.

Прежде всего, необходимо использовать принцип минимизации привилегий, то есть пользователям необходимо назначать только те права, которые необходимы им для работы. Недопустимо использование прав 777 на те приложения, запуск которых может привести к получению root-shell. Также недопустимо разрешение пользователям запуска любых команд под sudo, так как это равносильно получению прав root. Аналогично, SUID бит должен устанавливаться только на безопасные приложения, в противном случае есть риск получения пользователем прав root.

Вместо заключения хочу пригласить вас на бесплатные демоуроки по Linux от OTUS. Зарегистрироваться на уроки можно по ссылкам ниже:

  • Диагностика сети в CentOS.
  • Bash повышенной сложности: массивы, ключи, отладка.
Читайте также:
Лучшая навигационная программа для Айфон

Источник: habr.com

Root-пользователь в Ubuntu: важные вещи, которые вы должны знать

Статьи

Автор cryptoparty На чтение 5 мин Опубликовано 14.01.2020

В Linux всегда есть суперпользователь с именем root.

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

Он может получить доступ к любому файлу и выполнить любую команду в вашей системе Linux.

С большой властью приходит большая ответственность.

Пользователь root дает вам полную власть над системой, следовательно, ее следует использовать с большой осторожностью.

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

И, следовательно, неправильная команда может разрушить систему.

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

Вам не нужно иметь привилегии root для выполнения ваших повседневных задач, таких как перемещение файлов в домашний каталог, загрузка файлов из Интернета, создание документов и т. д.

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

Означает ли это, что вы не можете быть пользователем root в Ubuntu или использовать систему с привилегиями root?

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

Как запускать команды от имени пользователя root в Ubuntu?

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

Например, если вы хотите обновить Ubuntu через командную строку, вы не можете запустить команду как обычный пользователь.

Система откажет в выполнении.

apt update Reading package lists. Done E: Could not open lock file /var/lib/apt/lists/lock — open (13: Permission denied) E: Unable to lock directory /var/lib/apt/lists/ W: Problem unlinking the file /var/cache/apt/pkgcache.bin — RemoveCaches (13: Permission denied) W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin — RemoveCaches (13: Permission denied)
Итак, как запустить команду от имени пользователя root?

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

sudo apt update
Ubuntu и многие другие дистрибутивы Linux используют специальный механизм, называемый sudo.

Sudo – это программа, которая контролирует доступ к запущенным командам от имени пользователя root (или других пользователей).

Sudo на самом деле довольно универсальный инструмент.

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

Вы также можете настроить, требуется ли пароль для некоторых команд или не запускать его с помощью sudo.

Это обширная тема, и, возможно, я подробно остановлюсь на ней в другой статье.

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

Эта учетная запись пользователя работает как администратор в вашей системе и в соответствии с политикой sudo по умолчанию в Ubuntu, она может запускать любую команду в вашей системе с привилегиями root.

Что касается sudo, так это то, что для запуска sudo требуется не пароль root, а собственный пароль пользователя.

И вот почему, когда вы запускаете команду с sudo, она запрашивает пароль пользователя, который запускает команду sudo:

Как видно из приведенного выше примера, пользователь admin пытался выполнить команду «apt update» с помощью sudo, и система запросила пароль admin.

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

Это совершенно нормально, поскольку в качестве функции безопасности по умолчанию на экране ничего не отображается.

Даже звездочки (*). Вы вводите свой пароль и нажимаете ввод.

Как стать пользователем root в Ubuntu?

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

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

Команда sudo позволяет имитировать корневую оболочку входа в систему с помощью этой команды:

sudo -i

Вы заметите, что когда вы переключаетесь в режим root, командная строка оболочки изменяется с $ (знак доллара) на # (знак фунта).

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

В конце концов, это не рекомендуется.
Другой способ временно переключиться на пользователя root – использовать команду su:

sudo su

Если вы попытаетесь использовать команду su без sudo, вы увидите ошибку «su authentication failure».

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

exit

Как включить пользователя root в Ubuntu?

Теперь вы знаете, что пользователь root по умолчанию заблокирован в дистрибутивах на основе Ubuntu.

Linux дает вам свободу делать что угодно с вашей системой. Разблокировка пользователя root является одной из таких свобод.

Если по каким-то причинам вы решили включить пользователя root, вы можете сделать это, установив для него пароль:

sudo passwd root
Опять же, это не рекомендуется, и я не буду рекомендовать вам делать это на рабочем столе.

Если вы забыли его, вы больше не сможете изменить пароль root в Ubuntu.

Вы можете снова заблокировать пользователя root, удалив пароль:

sudo passwd -dl root

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!

Источник: itsecforu.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru