Ubuntu и права администратора: утрата и обретение


Алексей Федорчук

— А пошли вы все обратно:
и внучка, и Жучка, и ручка, и фея!
А про шарманку-то и забыл…
Старая готическая сказка

Давеча, занимаясь настройкой виртуальных машин Ubuntu в VirtualBox’е, я с удивлением обнаружил, что в этом дистрибутиве нет простого способа включить пользователя в какую-либо дополнительную группу. Точнее, такого способа не предусмотрено ни в Параметрах системы, ни в Ubity Tweek Tool. В штатных настройках можно только поменять язык, пароль и включить автоматический вход в систему:

ubuntu-and-adm_001
А в полуштатном твикере я вообще не нашёл ничего, имеющего отношение к управлению пользователями и группами.

Конечно, это не большая беда, поскольку в любой Linux-системе имеется специальная утилита usermod, которая, в том числе, позволяет и изменить групповую принадлежность пользователя — как сменить его основную группу (если это зачем-то потребовалось), так и приписать его к произвольному количеству групп дополнительных. Делается это так:

$ sudo usermod -G group1,group2,...,group# username -a

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

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

sudo usermod -G vboxsf alv

я совсем забыл про опцию -a, в результате чего был с позором изгнан из всех групп, в которых состоял ранее (кроме указанной в качестве значения опции -G). В том числе и из группы собственной первичной группы. А что ещё печальней — из группыadm, которая является важнейшей для первого пользователя в системе. Так как именно она даёт право получать административные привилегии по команде sudo. И в результате я потерял возможность простым способом вернуть всё взад.

Однако справиться с этой незадачей не так сложно. Теоретически для этого надо при перезагрузке системы, сразу по выходе из BIOS’а, быстро-быстро нажать Escape, дабы получить доступ к меню GRUB’а, выбрать там дополнительные опции загрузки, а в них — пункт recovery mode:

ubuntu-and-adm_002
Правда, в русифицированных Ubuntu 15.04 и 15.10 картина после этого будет несколько сюрреалистической. Впрочем, опознать в этой китайской грамоте пункт со словом root, написанным латиницей, труда не составит:

ubuntu-and-adm_003
После чего мы, без всякого пароля и прочей индентификации, оказываемся в командной строке шелла с правами администратора. Где для начала надо перемонтировать корневую файловую систему в режим записи (по умолчанию она смонтирована только для чтения):

# mount -o rw,remount /dev/sda1

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

# usermod -g alv alv

К слову сказать, именно таким образом можно и просто поменять свою первичную группы, например, на users, для единообразия с большинством других дистрибутивов Linux — это может иметь смысл при наличии на машине (реальной) нескольких систем, из которых необходим доступ к одним и тем же данным. Хотя это и не обязательно — данная задача решается и иными способами.

А теперь повторить команду, аккуратно перечислив все нужные группы (нглавное, не забыв шарманку группу adm и опцию -a):

# usermod -G adm,[что_нужно] alv -a

Теперь командой exit можно вернуться в меню recovery mode и выбрать в нём пункт первый, содержащий волшебное слово resume:

ubuntu-and-adm_004
Это приведёт к продолжению нормальной загрузки и появлению окна авторизации:

ubuntu-and-adm_005
Именно таким способом нужно действовать в условиях реальности. В виртуальной же машине более простым способом может оказаться подключение установочного диска Ubuntu (или почти любого другого Live-образа) в качестве виртуального оптического привода с выбором при загрузке пункта Try Ubuntu. После чего монтируется (в файловом менеджере) корневая файловая система виртуальной машины и даётся команда смены корня:

$ sudo chroot /media/ubuntu/[UUID]

Сам UUID можно подсмотреть в каталоге /media/ubuntu/ или определить непосредственно:

$ sudo blkid

А теперь остаётся только дать приведённую выше последовательность команд usermod и перезагрузиться обычным образом. Не забыв, разумеется, предварительно отсоединив виртуальный Live-носитель.

,

Один комментарий на «“Ubuntu и права администратора: утрата и обретение”»

  1. Вспоминается ситуация с mint и русской раскладкой. Если при установки не обдумав выбрать русский язык, то залогиниться в систему после установки будет невозможно т.к. на стартовом экране(и всех tty) будет только русская раскладка. Но это еще под беды, зайти в recovery mode тоже не удастся т.к. пользователь root по умолчанию не создан, а под имеющимися mint пускать отказывается(init=/bin/sh кстати не подумал загрузить, может и прокатило-бы). Остается только грузиться с livecd и вручную править /etc/defaults/keyboard, что еще более символично после успешного логина система начинает брюзжать, что кто-то трогал конфиги.

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