blog post: busybox to the rescue
This commit is contained in:
parent
078e138317
commit
dc1a7e5012
47
source/_posts/2014-01-30-busybox-to-the-rescue.markdown
Normal file
47
source/_posts/2014-01-30-busybox-to-the-rescue.markdown
Normal file
@ -0,0 +1,47 @@
|
||||
---
|
||||
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
|
Loading…
Reference in New Issue
Block a user