Вчера я совершенно случайно сам у себя отобрал права на sudo в ubuntu. Ниже написано как я это сделал и как починил.
Главной причиной послужила моя не внимательность и изрядное количество пива в организме. Видимо надо переходить на безалкогольные напитки, к тому же кока-кола выпустила пиво. Потом можете почитать о пиве от коки на BeerPlace.com.ua, возможно с ним не будет таких глупых ошибок, как удаление самого себя из группы sudo.
А отобрал права на sudo командой:
sudo usermod -G vboxusers имя_пользователя
Вот так, забыв маленький ключик «-a», я удалил себя из всех остальных групп кроме виртуалбоксовской.
Правильная команда на добавления пользователя в группу: sudo usermod -a -G vboxusers имя_пользователя
В результате моей ошибки при любой команде начинающийся с sudo мне писали:
zegi is not in the sudoers file. this incident will be reported
Вернуть права можно отредактировав файл /etc/sudoers и вписать после строчки с sudo имя пользователя и ALL=(ALL:ALL) ALL. Должно быть примерно так:
%sudo ALL=(ALL:ALL) ALL
zegi ALL=(ALL:ALL) ALL
Проблема в том, что для редактирования файла /etc/sudoers нужен доступ к sudo. Если у нас есть ещё один пользователь с правами к sudo, то логинимся за него (Cntl+Alt+F2) и редактируем файл /etc/sudoers
sudo nano /etc/sudoers
А вот если второго пользователя нет, то нам понадобится LiveCd. Загружаемся с него и монтируем наш диск с линуксом.
В начале создаём папку, куда примонтируем диск
sudo mkdir /mnt/lin
Теперь монтируем диск в свежесозданную папку
sudo mount /dev/sde4 /mnt/lin
Узнать под какой буквой у нас винтчестер(/dev/sde /dev/sda /dev/sdb и т.п.) можно командой:
ls -l /dev/disk/by-label/
после успешного монтирования можно редактировать файл /etc/sudoers
sudo nano /mnt/lin/etc/sudoers
Вносим изменения, сохраняем файл(Cntl+x > Y > enter) и отмонтируем диск:
sudo umount /dev/sde4 /mnt/lin
Перезагружаемся в нормальную систему. Доступ к sudo должен вернуться.
P.S.: Я долго подбирал картинку к статье. В итоге выбрал эту картинку… она лучше всего ассоциируется с тем состоянием в котором я щас.
А через su нельзя сделать? su (или su root, одно и то же), пароль свой и уже потом править судоэрс (желательно, кстати, через команду visudo, а не вручную. Но тут одна тонкость — редактирование запускается в vim, что для пользователя убунты катастрофа:)? Не могу проверить это на практике, не хочу ломать судоэрс, но может и поможет. Получить рут-шелл введя пароль СВОЙ возможно, сейчас проверил, но у меня, конечно, нормальный судоэрс. Хотя есть подозрение, что у рута просто тот же пароль, что и у пользователя первого.
Алсо, если есть другой пользователь, то поможет тот же su, зачем же переключаться куда-то в другую консоль? su имя_пользователя, пароль, правка судоэрс, exit, профит.
И еще из арчвики при установке его узнал вдруг, что, например, %sudo — означает «группа (символ %) sudo». То есть идеологически более правильно не записывать всех пользователей, которым нужен sudo, в судоэрс, а добавить их просто в соответствующую группу. Но это так, ерунда.
Спасибо за развёрнутый комментарий. Щас протестировал способ с su в ubuntu на новом пользователе… всё равно остаются права юзера, а не рута.
Я на самом деле только вчера узнал, что нельзя просто залогинится под рутом в ubuntu. Как пример:
su root
Пароль:
su: Сбой при проверке подлинности
а
su -l
я через ету командк правлю/удаляю все что угодноперегрузится в revovery, а там root и делай что хочешь.
я так испортил sudoers (ошибку сделал) и так исправлял.
А не проще загрузиться с другими параметрами ядра и спокойно поменять всё как нужно?
… ro quiet rw init=/bin/bash