Алексей Федорчук
— А пошли вы все обратно:
и внучка, и Жучка, и ручка, и фея!
А про шарманку-то и забыл…
Старая готическая сказка
Давеча, занимаясь настройкой виртуальных машин Ubuntu в VirtualBox’е, я с удивлением обнаружил, что в этом дистрибутиве нет простого способа включить пользователя в какую-либо дополнительную группу. Точнее, такого способа не предусмотрено ни в Параметрах системы, ни в Ubity Tweek Tool. В штатных настройках можно только поменять язык, пароль и включить автоматический вход в систему:
А в полуштатном твикере я вообще не нашёл ничего, имеющего отношение к управлению пользователями и группами.
Конечно, это не большая беда, поскольку в любой 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 15.04 и 15.10 картина после этого будет несколько сюрреалистической. Впрочем, опознать в этой китайской грамоте пункт со словом root, написанным латиницей, труда не составит:
После чего мы, без всякого пароля и прочей индентификации, оказываемся в командной строке шелла с правами администратора. Где для начала надо перемонтировать корневую файловую систему в режим записи (по умолчанию она смонтирована только для чтения):
# mount -o rw,remount /dev/sda1
И дать уже правильные команды для определения своей групповой принадлежности, сначала основной:
# usermod -g alv alv
К слову сказать, именно таким образом можно и просто поменять свою первичную группы, например, на users
, для единообразия с большинством других дистрибутивов Linux — это может иметь смысл при наличии на машине (реальной) нескольких систем, из которых необходим доступ к одним и тем же данным. Хотя это и не обязательно — данная задача решается и иными способами.
А теперь повторить команду, аккуратно перечислив все нужные группы (нглавное, не забыв шарманку группу adm
и опцию -a
):
# usermod -G adm,[что_нужно] alv -a
Теперь командой exit
можно вернуться в меню recovery mode и выбрать в нём пункт первый, содержащий волшебное слово resume:
Это приведёт к продолжению нормальной загрузки и появлению окна авторизации:
Именно таким способом нужно действовать в условиях реальности. В виртуальной же машине более простым способом может оказаться подключение установочного диска Ubuntu (или почти любого другого Live-образа) в качестве виртуального оптического привода с выбором при загрузке пункта Try Ubuntu. После чего монтируется (в файловом менеджере) корневая файловая система виртуальной машины и даётся команда смены корня:
$ sudo chroot /media/ubuntu/[UUID]
Сам UUID можно подсмотреть в каталоге /media/ubuntu/
или определить непосредственно:
$ sudo blkid
А теперь остаётся только дать приведённую выше последовательность команд usermod
и перезагрузиться обычным образом. Не забыв, разумеется, предварительно отсоединив виртуальный Live-носитель.
Вспоминается ситуация с mint и русской раскладкой. Если при установки не обдумав выбрать русский язык, то залогиниться в систему после установки будет невозможно т.к. на стартовом экране(и всех tty) будет только русская раскладка. Но это еще под беды, зайти в recovery mode тоже не удастся т.к. пользователь root по умолчанию не создан, а под имеющимися mint пускать отказывается(init=/bin/sh кстати не подумал загрузить, может и прокатило-бы). Остается только грузиться с livecd и вручную править /etc/defaults/keyboard, что еще более символично после успешного логина система начинает брюзжать, что кто-то трогал конфиги.