48 lines
1.7 KiB
Markdown
48 lines
1.7 KiB
Markdown
---
|
|
layout: post
|
|
title: "busybox to the rescue"
|
|
date: 2014-01-30 21:04:36 +0100
|
|
comments: true
|
|
categories:
|
|
- rescue system
|
|
- busybox
|
|
- linux
|
|
- glibc
|
|
---
|
|
|
|
Some days before I broke my raspberry pie, after pacman running out of memory, while
|
|
updating my glibc. To solve such problems on any of my machines, I decided to
|
|
setup rescue systems with busybox. Therefor just install the package *busybox*
|
|
on archlinux or *busybox-static* if you are on debian.
|
|
Busybox is a so called multi-call binary.
|
|
This means, it exposes different behaviour depending on the program name, which
|
|
is used to execute it. As a basic environment for the rescue system, I created a
|
|
symlinks for every command which busybox is capable of:
|
|
|
|
$ sudo mkdir /opt/busybox/bin
|
|
|
|
$ busybox --list | xargs -n 1 -d "\n" -I "cmd" sudo ln -s $(which busybox) /opt/busybox/bin/cmd
|
|
|
|
In order to be able to login in a system, where the usual shell is broken, I
|
|
added a new user called *rescue*.
|
|
|
|
$ useradd -m -s /opt/busybox/bin/ash rescue
|
|
|
|
Because origin passwd uses sha256 for password hashes, which busybox is not
|
|
capable of by default you have to recreate every password, you plan to login, to
|
|
make things like su work:
|
|
|
|
$ sudo busybox passwd -a 2 rescue # use sha1 instead of sha256
|
|
$ sudo busybox passwd -a 2 root
|
|
|
|
The login shell is set in this case to the one busybox provides.
|
|
In order to be able to login via ssh this shell has to be added
|
|
*/etc/shells*:
|
|
|
|
$ echo /opt/busybox/bin/ash | sudo tee -a /etc/shells
|
|
|
|
The last thing left, is to prepend the path with busybox symlinks, to the PATH
|
|
variable of the rescue user, to use them instead of their coreutils equivalents.
|
|
|
|
$ echo 'export PATH=/opt/busybox/bin:$PATH' | sudo tee -a /home/rescue/.profile
|