понедельник, 24 августа 2009 г.

Снова патч Бармина

Все-таки ездить без тормозов бывает достаточно чревато. Благоприобретенные рефлексы притупляют бдительность и легко в поворот на вписаться.

Я уже писал, что Солярис постепенно приобретает защиту от дурака.

Однако, не от всякого. ;) Есть дурак изобретательный. :)

Привычка писать команды быстро иногда играет дурную службу. Выполняя одну вполне рутинную задачу - обновление одного софтверного пакета общего назначения на одном из серверов, я сам из-за тривиальной опечатки выполнил рутом от рута rm *.

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

lrwxrwxrwx 1 root root 9 May 13 11:55 bin -> ./usr/bin

А на машине у всех пользователей, включая рута, шелл - /bin/bash.

Ой! Что-то страшно!

И не пускает, говорит, No shell.

Правильно, в файле паролей что написано?

root @ myhost / # cat /etc/passwd
root:x:0:0:Super-User:/:/bin/bash

Ага. Рутом, чтобы поменять шелл, не зайдешь. Никем с этим шеллом - не зайдешь. Машинка на ZFS, конечно, было бы с чего стартовать - 5 минут работы, однако...

Машина - стартует. Хоть и не все сервисы. Даже приходит в мультиюзер. Только логиниться не дает.

Перезапускаем кнопкой, лезем в меню GRUB, пробуем запустить в single.

Запускается.

Спрашивает пароль рута. Говорим. И, о чудо - ругнувшись пару раз на отсутствующий шелл, запускает-таки Борн.

Уф. Пронесло.

Смотрим жертвы и разрушения. /usr/bin присутствует со всем содержимым. Повезло, что не -rf опции были. Ссылки /bin нет. Создаем:

# ln -s /usr/bin /bin

Выходим-заходим-перегружаемся.

Авек плезир.

"Реконструкция завершена!"

Моралистам, желающим тыкнуть "Не сиди под рутом", замечу вот что - pkgadd/pkgrm не под рутом не работает.

Так что - будьте все же внимательней при выполнении задач, которые настолько привычны, что выполняются на полном автопилоте.