Суперпользователь и Sudo не работают на Debian 12

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

Недавно я перешел с Windows на Linux, более конкретно на Debian 12. Я немного борюсь, потому что здесь много нового, например, sudo. В любом случае, я стараюсь сделать так, чтобы мой обычный пользователь имел права sudo, чтобы облегчить разработку и не приходилось постоянно входить как суперпользователь.

Я использовал команду gpasswd -a user sami, и она действительно добавила пользователя в группу sudo, если я использую groups sami, мой пользователь отображается как sudo. Однако когда я пытаюсь использовать su sami и ввожу свой пароль правильно, ничего не происходит и ошибок не выдается. Если я ввожу неправильный пароль, то получаю ошибку аутентификации. Как и предполагалось, если я использую apt update без прав root, выдается ошибка “доступ запрещен”. Но самое странное, что если я напишу sudo apt install any_package_here или sudo apt update и введу свой пароль, пакет устанавливается или обновляется нормально. Может кто-нибудь мне помочь?

Пример из терминала.

sami@sami-debian:~$ su sami
Пароль: 
sami@sami-debian:~$ # Я ввел правильный пароль
sami@sami-debian:~$ su sami
Пароль: 
su: Ошибка аутентификации
sami@sami-debian:~$ # Я ввел неправильный пароль и получил ошибку аутентификации
sami@sami-debian:~$ apt update
Чтение списков пакетов... Готово
E: Не удалось открыть файл блокировки /var/lib/apt/lists/lock - open (13: Доступ запрещен)
E: Невозможно создать эксклюзивный доступ к каталогу /var/lib/apt/lists/
W: Проблема при удалении ссылки на файл /var/cache/apt/pkgcache.bin - RemoveCaches (13: Доступ запрещен)
W: Проблема при удалении ссылки на файл /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Доступ запрещен)
sami@sami-debian:~$ # Это на португальском, но в основном говорит, что доступ запрещен для всего
sami@sami-debian:~$ sudo apt install 7zip
Чтение списков пакетов... Готово
Строим дерево зависимостей... Готово
Чтение информации о состоянии... Готово        
Следующие пакеты были установлены автоматически и уже не нужны:
  libdaxctl1 libndctl6 libpmem1 liburing2
Используйте 'sudo apt autoremove', чтобы удалить их.
Новые пакеты, которые будут установлены:
  7zip
0 пакетов обновлено, 1 новый пакет установлен, 0 будет удалено и 0 не обновлено.
Необходимо загрузить 0 B/976 kB файлов.
После этой операции будет использовано дополнительно 2.662 kB дискового пространства.
Выбор пакета 7zip, который не был выбран раньше.
(Чтение базы данных ... 195927 файлов и директорий установлено в настоящее время.)
Подготовка к распаковке .../7zip_22.01+dfsg-8_amd64.deb ...
Распаковка 7zip (22.01+dfsg-8) ...
Настройка 7zip (22.01+dfsg-8) ...
Обработка 'триггеров' для man-db (2.11.2-2) ...
sami@sami-debian:~$ # Не потребовался пароль, и пакет был установлен корректно
sami@sami-debian:~$ su
Пароль:
root@sami-debian:~$ # Я ввел правильный пароль для пользователя root, и все сработало как ожидалось

sami@sami-debian:~$ sudo apt update
[sudo] пароль для sami: 
Получено:1 http://deb.debian.org/debian bookworm InRelease
Получено:2 http://security.debian.org/debian-security bookworm-security InRelease                                 
Получено:3 http://repo.mysql.com/apt/debian bookworm InRelease                                                    
Получено:4 http://deb.debian.org/debian bookworm-updates InRelease                                                
Получено:5 https://packages.microsoft.com/debian/12/prod bookworm InRelease
Получено:6 https://packages.microsoft.com/repos/code stable InRelease
Чтение списков пакетов... Готово
Строим дерево зависимостей... Готово
Чтение информации о состоянии... Готово        
Все пакеты обновлены.
sami@sami-debian:~$ # Я ввел правильный пароль

Я использую KDE Plasma

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

Я только что сделал git clone и когда попробовал изменить ветки, то сказали, что у меня нет прав на изменение чего-то вроде index.lock. Поэтому мне каждый раз, когда я работаю в терминале, нужно использовать сначала sudo? Я не тестировал с использованием sudo git checkout branch. Мне стоит это сделать?

sudo и su работают как ожидалось в примерах вашего вопроса.

Когда вы уже вошли в систему как пользователь sami, команда su sami не будет иметь видимого эффекта, кроме запроса пароля, после чего придется ввести exit, чтобы вернуться в предыдущую оболочку. Команда su sami фактически запускает оболочку от имени пользователя sami. Это почти то же самое, что запускать $SHELL. (Эффекты su sami также видны, например, в $SHLVL и history, но я не хочу углубляться в детали, так как это не является основной темой вопроса.)

Вы можете использовать su и ввести пароль root, чтобы стать root, если ваша система настроена на это разрешение. (не рекомендуется)

Требование вводить ваш пароль при первом вызове sudo some_command нормально, и оно запросит его снова через некоторое время. (sudo можно настроить так, чтобы команды выполнялись без пароля.)

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


Я не понимаю, почему вам нужно стать root для “изменения веток на github”. Это ненормально.

Ранее вы выполняли команды git как root, а не как обычный пользователь? Или вы клонировали свой репозиторий в местоположение вне вашего домашнего каталога?

Пожалуйста, добавьте детали к своему вопросу, если хотите получить помощь по этой теме.

Я нашел ‘ошибку’. Я создал директорию через командную строку как root. Я использовал ls -l, чтобы увидеть права доступа и, как и ожидалось, у моего обычного пользователя, sami, были только права на выполнение и чтение, но не права на запись. Это имеет смысл, так как я создал как root, я не могу выполнять такие операции, как git checkout, с этими файлами. Извините за потраченное время. Linux для меня совершенно новый.

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

Ваш вопрос касается работы с sudo и su в Debian 12. Я постараюсь объяснить ситуацию и помочь вам разобраться с возникшими трудностями.

Использование su и sudo

  1. Команда su:
    Команда su (от "substitute user") позволяет вам переключаться на другого пользователя. Если вы используете команду su sami, находясь уже под пользователем sami, это не приведёт к заметным изменениям, поскольку вы останетесь под тем же пользователем. Команда только запросит ввод пароля. Чтобы стать пользователем root, вам нужно ввести su (без имени пользователя) и пароль root. Это позволяет вам работать с правами суперпользователя, но это не всегда рекомендуется из соображений безопасности.

  2. Команда sudo:
    sudo (от "superuser do") позволяет исполнять команды с правами суперпользователя без необходимости полного переключения на root. Когда вы используете sudo, вам потребуется ввести пароль вашего обычного пользователя, но не пароля root, что обеспечивает дополнительный уровень безопасности. Сначала вводите sudo, а затем команду, например, sudo apt update. Это поведение является нормальным.

Причины ваших проблем

Теперь, что касается вашей ситуации:

  • Имя пользователя и доступ: Похоже, вы пытались выполнять команды в каталогах, для которых у вашего пользователя sami недостаточно прав (например, директории, созданные с правами root). Это объясняет, почему вы получаете ошибки "permission denied" при выполнении команд без sudo.

  • Проблемы с Git: Вы упомянули, что при работе с Git не можете выполнять операции, такие как git checkout, поскольку не имеете прав на запись. Это связано с тем, что каталоги и файлы, созданные под root, у вашего пользователя могут иметь только права на чтение и выполнение. Для исправления этой проблемы, вам нужно изменить права доступа к директории, где находится ваш репозиторий. Вы можете использовать команду chown для изменения владельца директории:

    sudo chown -R sami:sami /путь/к/вашему/репозиторию

    Это даст вашему пользователю sami полные права (чтение, запись и выполнение) на данный репозиторий.

Рекомендации

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

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

  3. Изучайте Linux: Поскольку вы только начинаете, настоятельно рекомендую освежить свои знания о Unix/Linux системах, о работе с правами доступа, пользователями и группами. Это поможет вам более эффективно работать в новой среде.

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

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

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