84 lines
2.9 KiB
Plaintext
84 lines
2.9 KiB
Plaintext
|
{
|
||
|
"metadata": {
|
||
|
"name": "",
|
||
|
"signature": "sha256:6ce33a27de23e2fd1ef01b1ff8304467b04dfda3913a8cfde79b64a871865f28"
|
||
|
},
|
||
|
"nbformat": 3,
|
||
|
"nbformat_minor": 0,
|
||
|
"worksheets": [
|
||
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"Es ist mal wieder soweit: Sein ganzes Backup-Ged\u00f6ns \u00fcberdenken und versuchen es ein wenig anzupassen. Es gibt da einen kleinen vServer denn ich seit neustem administrieren soll. Keine Backups... war ja klar. Also was nimmt man da nun? Ich benutze seit Jahren ein zusammengefrickeltes Shell-Script mit dem Namen \"DoTheBackup\". Seit ein paar Monaten habe ich versucht es mit Python in was Besseres zu gie\u00dfen. Rausgekommen ist dies [hier](https://github.com/xsteadfastx/DoTheBackup). Bis jetzt setze ich da voll auf `rsync` und `git`. Und wenn man den Remote-Host auf den man die Backups schieben m\u00f6chte ein wenig einschr\u00e4nken m\u00f6chte, und zwar auf genau diese beiden Kommandos, war das f\u00fcr mich nicht so einfach. Es gibt da viele M\u00f6glichkeiten. Vor allem kann man seine `/home/backupuser/.ssh/authorized_keys` auf ein Kommando begrenzen. Man nutzt daf\u00fcr `commando=\"rsync foo bar\"` vor dem Publickey. Wie gesagt: Ein Kommando. Nun kann man sich ein Wrapper-Script bauen. Habe ich versucht und bin an `git` gescheitert. Viel und lange gegoogelt und kaum etwas gefunden. Bis auf [diese Dokumentation](http://git-scm.com/docs/git-shell) von `git` selber. `git-shell` hatte ich erstmal aussenvor gelassen weil ich bis jetzt dachte es beschr\u00e4nkt sich ganz auf `git`. Falsch!"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"Den Shell des Backupusers auf `git-shell` setzen."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"collapsed": false,
|
||
|
"input": [
|
||
|
"%%bash\n",
|
||
|
"sudo chsh -s $(which git-shell) backupuser"
|
||
|
],
|
||
|
"language": "python",
|
||
|
"metadata": {},
|
||
|
"outputs": []
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"Man legt das Verzeichnis `git-shell-commands` in das Homeverzeichnis des Backup-Users."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"collapsed": false,
|
||
|
"input": [
|
||
|
"%%bash \n",
|
||
|
"mkdir /home/backupuser/git-shell-commands"
|
||
|
],
|
||
|
"language": "python",
|
||
|
"metadata": {},
|
||
|
"outputs": []
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"Nun kann man Symlinks in dieses Verzeichnis legen mit den Kommandos die der Backup-User \u00fcber SSH ausf\u00fchren darf."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"collapsed": false,
|
||
|
"input": [
|
||
|
"%%bash\n",
|
||
|
"cd /home/backupuser/git-shell-commands\n",
|
||
|
"ln -s $(which rsync) rsync"
|
||
|
],
|
||
|
"language": "python",
|
||
|
"metadata": {},
|
||
|
"outputs": []
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"Und zack feddich..."
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"metadata": {}
|
||
|
}
|
||
|
]
|
||
|
}
|