Вопрос или проблема
Я недавно перешел на Linux с Windows, где у меня был отдельный администраторский пользователь и стандартный пользователь для повседневных задач. Я создал скрипт, который делает обычный вход как администратор невозможным, просто чтобы я случайно не вошел как администратор (в основном по соображениям безопасности). Поэтому, чтобы внести изменения как администратор, мне (или любому, кто использует мой компьютер) придется вводить пароль администратора по запросу. Мне нравилась такая настройка, потому что она кажется более безопасной, чем просто постоянный вход как администратор.
На Linux вход под root по умолчанию отключен, что я полностью понимаю. Чтобы внести изменения от имени root, нужно предшествовать команде sudo
и ввести пароль пользователя, а не пароль root (при условии, что пользователь является частью sudoers). Я понимаю, как работает этот механизм и какие пользователи могут использовать sudo
в целом. Мой вопрос: хорошая ли идея заставить sudo
запрашивать пароль root, а не мой? Я имею в виду, в Windows мне нужно было вводить пароль администратора, чтобы внести изменения от имени администратора, хорошая ли это идея делать то же самое на Linux? Или мне оставить, как есть?
Я единственный человек, использующий мой компьютер, и никому не даю свои учетные данные, если это имеет значение.
Следующий ответ был протестирован на Ubuntu 22.04.3 LTS Desktop Linux.
В вашем вопросе вы утверждаете “… из Windows, где у меня был отдельный администраторский пользователь и стандартный пользователь для повседневных задач”. То же самое верно и для Linux. Вы можете создать учетные записи стандартного пользователя и администратора. Допустим, пользователь rpj
является стандартным пользователем, а пользователь dma
является администратором.
Чтобы dma
стал пользователем root
, этому пользователю нужно ввести следующее, где будет запрашиваться пароль для dma
.
sudo -s
Чтобы выполнить одну команду от имени root
, нужно ввести следующее, где будет запрашиваться пароль для dma
.
sudo command
Чтобы rpj
стал пользователем root
, этому пользователю нужно ввести следующее, где пароль для dma
будет запрашиваться дважды.
su -P -c 'sudo -s' dma
Чтобы выполнить одну команду от имени root
, нужно ввести следующее, где пароль для dma
будет запрашиваться дважды.
su -P -c 'sudo command' dma
Для других задач, выполняемых стандартным пользователем rpj
, которые требуют аутентификации, будет запрашиваться пароль администратора dma
вместо пароля стандартного пользователя rpj
. Например, если стандартный пользователь rpj
попытается добавить нового пользователя, будет запрашиваться пароль администратора dma
, как показано ниже.
Ответ или решение
Должен ли sudo запрашивать пароль root?
Прежде чем обсудить целесообразность запроса пароля root при использовании команды sudo
, важно понимать, как работает механизм управления правами доступа в Linux и его отличие от системы Windows.
Принципы работы sudo
В Linux, система управления правами доступа основана на концепции ролей пользователей. Процессор команд sudo
позволяет пользователям выполнять команды от имени другого пользователя, обычно от имени пользователя root, который имеет полный доступ ко всем функциям системы. В отличие от Windows, где для выполнения административных задач требуется ввод пароля администратора, в Linux для команд sudo
используется пароль обычного пользователя, который включен в файл sudoers
.
Причина этого заключается в том, что Linux изначально настроен на то, чтобы большему числу пользователей был предоставлен возможность повысить свои привилегии без необходимости знать пароль root. Это позволяет поддерживать уровень безопасности, так как пользователи могут временно получить необходимые права для выполнения конкретных задач, не требуя постоянного доступа к аккаунту root.
Почему запрашивать пароль root может быть небезопасно?
-
Упрощение администрирования: Запрашивая пароль пользователя вместо root, вы уменьшаете риск случайного доступа к гарантиям безопасности. Если кто-то получит доступ к вашему аккаунту, они не смогут выполнять команды с правами root без вашего пароля. Это дополнительный уровень защиты.
-
Упрощение управления пользователями: Если разные пользователи имеют разные уровни доступа, использование собственного пароля упрощает процесс. Например, если один аккаунт имеет возможность использовать sudo, а другой нет, можно детализировано контролировать, кто и когда получает доступ к повышенным правам.
-
Логи и аудит: Использование вашего пароля позволяет лучше отслеживать действия, выполняемые с привилегиями повышенного доступа. Это позволяет создавать более детализированные логи и историю операций, что может быть важным для аудита безопасности.
Обсуждение изменений
Если вы решите изменить поведение sudo
так, чтобы он запрашивал пароль root, вам следует учесть, что это может создать определенные неудобства. Например, вы будете ограничивать доступ к системным командам теми пользователями, которые знают пароль root. Однако, в вашей ситуации, где вы являетесь единственным пользователем системы и не делитесь учетными данными, это может привести к снижению удобства.
Как реализовать запрашивание пароля root в sudo?
Если вы все же решили, что хотите, чтобы sudo
запрашивал пароль root, вы можете создать специальное правило в файле sudoers
, чтобы отдать распоряжения команде sudo
, запрашивать именно пароль root. Для изменения конфигурации зайдите в файл с помощью команды:
sudo visudo
И добавьте следующие строки:
Defaults rootpw
Это изменение позволит вам использовать пароль root для команд sudo. Однако, повторюсь, это может снизить уровень безопасности, поэтому рекомендуется тщательно обдумать такое решение.
Заключение
Ваша текущая установка — использование пользователя и пароля для выполнения административных задач — считается более безопасной практикой на Linux. Система уже спроектирована так, чтобы предоставить достаточный уровень безопасности, совместимый с принципами управления правами доступа, а использование пароля обычного пользователя делает доступ более контролируемым. Рекомендуется оставить настройку sudo
, запрашивающую пароль пользователя, и избегать необходимости вводить пароль root, что может привести к ошибкам или увеличению риска безопасности.