Пишет, что меня нет в файле “sudoers”!

Вопрос или проблема

Я перешел с Ubuntu-20 на Debian-12, и не могу выполнить команду sudo с моим именем пользователя my_name в только что установленной системе.

Поэтому я добавил my_name в группу “sudo” (usermod -aG sudo my_name) через терминал, залогиненный как root, и затем перезагрузил компьютер.

Но это не сработало, я все еще получаю сообщение типа “my_name is not in sudoers file…”.

Я обнаружил странную вещь: когда я выполняю команду groups в терминале, залогинившись как my_name, имя группы “sudo” НЕ существует в списке групп. Но когда я выполняю groups my_name с правами root, имя группы “sudo” СУЩЕСТВУЕТ в списке групп!

Это баг Debian-12? Или я что-то упустил?

Файлы /etc/group и/или /etc/gshadow редактировались вручную (вне usermod/groupmod и аналогичных инструментов)?

Может быть, есть ошибка в синтаксисе, которая достаточно мала, чтобы быть проигнорированной groups yourusername, но библиотеки PAM, которые настраивают вашу сессию, могут быть более строгими.

Выполните grpck от имени root, чтобы проверить синтаксис файлов групп.

Вам может понадобиться выполнить pwck тоже, хотя вы наверняка получите несколько сообщений об ошибках о системных аккаунтах, таких как lp, news, uucp, list, irc и gnats, у которых нет домашнего каталога; в большинстве случаев это просто означает, что у вас не установлен соответствующий подсистема/услуга, и это безвредно.

Выполните su и adduser user_name sudo, чтобы добавить пользователя в группу sudo как root, затем выйдите и войдите обратно. ПРИМЕЧАНИЕ: если вы находитесь в графической среде, выход означает выход из всей графической среды.

1. Войти как root: вам нужно войти в аккаунт root, чтобы иметь возможность вносить изменения в файл sudoers. Если у вас есть пароль root, вы можете переключиться на пользователя root, набрав su в терминале, а затем введя пароль root.

1.1 Найдите visudo в /usr/sbin.

1.2 Добавьте /usr/sbin в ваш PATH: вы можете временно добавить /usr/sbin в ваш PATH следующим образом:

export PATH=$PATH:/usr/sbin

1.3 Выполните visudo с полным путем:

/usr/sbin/visudo
  1. Редактируйте файл sudoers: как только вы вошли как root, используйте команду visudo для безопасного редактирования файла sudoers. Эта команда открывает файл sudoers в текстовом редакторе по умолчанию и проверяет синтаксис ошибок при сохранении, что критично, так как ошибка может заблокировать весь доступ к sudo.

  2. Добавьте вашего пользователя в файл sudoers: в файле sudoers найдите строку, которая выглядит следующим образом:

root    ALL=(ALL:ALL) ALL

Ниже этой строки добавьте строку для вашей учетной записи пользователя таким образом:

yourusername    ALL=(ALL:ALL) ALL

Замените yourusername на ваше реальное имя пользователя.

  1. Сохраните и выйдите: после добавления вашего пользователя в файл sudoers, сохраните файл и выйдите из редактора. Если вы используете visudo с редактором Vim по умолчанию, вы можете сделать это, набрав :wq и затем нажав Enter.

  2. Выйдите из аккаунта root: как только ваш пользователь был добавлен, выйдите из аккаунта root и попробуйте использовать sudo с вашей обычной учетной записью пользователя.

У меня была та же проблема: после предоставления пользователю X прав root под учетной записью root, повторный вход под пользователем X и применение sudo приводит к “не в группе sudoers”, несмотря на то, что пользователь может быть виден с помощью ‘getent group sudo’.

Тем не менее, вы также можете изменить разрешения в настройках Gnome, в разделе Пользователи и группы. Это сработало для меня.

Сначала выполните passwd как root для пользователя, так как это заменяет хэш где-то.
su
passwd username
затем
usermod -aG sudo username
выйти
выйдите и войдите, и все будет в порядке.

Ответ или решение

Проблема доступа к команде sudo после обновления системы с Ubuntu 20 на Debian 12 может показаться на первый взгляд сложной. Однако, разобравшись в нюансах работы систем управления правами пользователей и групп, а также в конфигурации системы, можно быстро найти и устранить причину. В вашем случае первопричина проблемы связана с тем, что пользователю my_name не удается получить права sudo, что свидетельствует об отсутствии корректной настройки привилегий для данного пользователя.

Теория

Debian и другие Unix-подобные системы используют файл sudoers для управления правами пользователей на выполнение команд от имени администратора. При добавлении пользователя в группу sudo с помощью команды usermod -aG sudo my_name, вы фактически говорите системе, что этот пользователь должен иметь определенные права. Однако, если после выполнения этой команды права не применяются, следует учитывать возможные ошибки на уровне конфигурации системы и программного окружения.

Пример

В вашей ситуации проблема возникает следующим образом:

  1. Вы добавляете пользователя my_name в группу sudo с помощью команды:

    usermod -aG sudo my_name

    После этого команда groups my_name, выполненная с правами root, показывает, что пользователь действительно добавлен в группу sudo.

  2. Тем не менее, при выполнении команды groups от имени my_name, группа sudo не отображается.

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

Применение

  1. Проверка наличия синтаксических ошибок в файлах групп:

    Выполните команду grpck для проверки синтаксиса файлов /etc/group и /etc/gshadow. Эти инструменты помогут убедиться в отсутствии ошибок:

    grpck
    pwck

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

  2. Редактирование файла sudoers:

    Самым надежным способом внесения изменений в данный файл является использование команды visudo, так как она проверяет файл на наличие синтаксических ошибок перед сохранением. Чтобы добавить пользователя в файл sudoers, выполните следующее:

    • Сначала войдите под root, например, с использованием команды su, если у вас есть пароль root.
    • Выполните команду:
      /usr/sbin/visudo
    • Добавьте следующую строку:
      my_name ALL=(ALL:ALL) ALL
    • Сохраните изменения и выйдите из редактора. В редакторе Vim это делается через команду :wq.
  3. Перезагрузка или повторный вход:

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

    exit
  4. Проверка Gnome настроек:

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

  5. Обновление пароля пользователя:

    Иногда помогает обновление хеша пароля пользователя. Выполните:

    su
    passwd my_name
    usermod -aG sudo my_name
    exit
  6. Проверка окружения PATH:

    Убедитесь, что путь /usr/sbin присутствует в вашем PATH. Это важно для правильного выполнения системных утилит.

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

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

Капча загружается...