Archiv der Kategorie: Linux

Pimp my shell – Eine vernünftige Arbeitsumgebung für Linux

Immer, wenn ich ein neues Linux aufsetze, führe ich bestimmte Kommandos durch bzw. konfiguriere ich mein System so, dass ich vernünftig damit arbeiten kann. Jeder hat seine Eigenheiten und Bedürfnisse – hier skizziere ich mal die meinen.

Zunächst installieren wir uns sudo, um als normaler Nutzer auch wie ein Supernutzer (=root) agieren zu können, ohne uns als root anmelden zu müssen. Natürlich müssen wir diese eine Installation selbst noch als root vornehmen. Danach müssen wir uns nie wieder als root anmelden – außer ins Notfällen.

apt-get install sudo

Nun fügen wir den während der Installation angelegten Nutzer der Gruppe „sudo“ hinzu: adduser sudo. In meinem Falle also den Nutzer „juergen“

adduser juergen sudo

Mit dem Befehl groups <username> kann man prüfen, ob das Hinzufügen tatsächlich geklappt hat.

groups juergen

Das war es schon. Jetzt bitte mit exit wieder aus der Shell ausloggen und als normaler Nutzer wieder einloggen. Jetzt kann man mit einem vorangestellten sudo Befehle wie root ausführen.

Testen wir unsere neuen Fähigkeiten, indem wir gleich einmal einen vernünftigen Editor installieren.

sudo apt-get install nano

Mit diesem Editor nehmen wir unsere erste Anpassung vor. Wir sorgen dafür, dass ab jetzt jeder neue Nutzer mit der bin/bash Shell verbunden wird.

sudo cp /etc/adduser.conf /etc/adduser.conf.bak # Kopie schadet nie
sudo nano /etc/adduser.conf

Im Editor suchen wir jetzt folgende Zeile (oder fügen sie falls nicht vorhanden hinzu):

DSHELL=/bin/bash

Als Nächstes sorgen wir dafür, dass unser System gleich mit den wichtigsten Alias-Befehlen versorgt wird. Mit einem alias kann man mehrere Linux-Kommandos, oder ein Linux-Kommando mit mehreren Optionen durch einen neuen Befehl ersetzen. Es wird benutzt, um Zeit zu sparen und weniger zu tippen.

Das bekannteste alias dürfte wohl die Abkürzung dir für den Befehl „ls -l“ sein.

Wir bearbeiten wieder eine Konfigurationsdatei.

sudo cp /etc/bash.bashrc /etc/bash.bashrc.bak #  Kopie schadet nie
sudo nano /etc/bash.bashrc

Und fügen ans Ende folgende Zeilen hinzu:

alias +='pushd .'
alias ..='cd ..'
alias ...='cd ../..'
alias beep='echo -en "
alias +='pushd .'
alias ..='cd ..'
alias ...='cd ../..'
alias beep='echo -en "\007"'
alias dir='ls -la  --color=auto'
alias gzcat='gunzip -c'
alias l='ls -alF'
alias la='ls -la'
alias ll='ls -la'
alias ls='/bin/ls $LS_OPTIONS'
alias ls-l='ls -l'
alias md='mkdir -p'
alias o='less'
alias rd='rmdir'
alias rehash='hash -r'
alias rm='rm -i'
alias unzip='tar xfvz'
alias which='type -p'
alias zip='tar cfvz'
7"' alias dir='ls -la --color=auto' alias gzcat='gunzip -c' alias l='ls -alF' alias la='ls -la' alias ll='ls -la' alias ls='/bin/ls $LS_OPTIONS' alias ls-l='ls -l' alias md='mkdir -p' alias o='less' alias rd='rmdir' alias rehash='hash -r' alias rm='rm -i' alias unzip='tar xfvz' alias which='type -p' alias zip='tar cfvz'

Und schon sieht unsere Shell (nach einer Neueinwahl) sehr viel bunter, schöner, übersichtlicher aus.

Update mit Composer

Hier eine kleine Anleitung, wie man Pakete, die mit composer installiert worden sind, auf den neuesten Stand bringt.

Wir wechseln in das Verzeichnis, in dem sich die Datei composer.json befindet. Wer nicht weiß, wo, der kann auch suchen:

sudo find / -name composer.json

Interessant, wo überall diese Dateien liegen, oder?

Das Updaten ist dann eher trivial.

Es gibt zwei wichtige Methode: das Updaten eines bestimmten Pakets:

composer update typo3/cms --with-all-dependencies # update nur von Typo3

Oder das Updaten aller Pakete:

composer update --with-all-dependencies

 

 

veraPDF auf Debian installieren

Für meinen Verlag benötige ich eine Möglichkeit, PDF-Dokumente von der Kommandozeile zu valieren. Dazu bietet sich das von der EU geförderte Projekt veraPDF an.

Aktuelle Pakete gibt es hier: http://docs.verapdf.org/install/

Hier eine kleine Schnellanleitung.

cd ~
wget http://downloads.verapdf.org/rel/verapdf-installer.zip
unzip verapdf-installer.zip
cd verapdf-greenfield-1.10.6 # oder welcher Ordner auch immer gerade erzeugt wurde
./verapdf-install #  alles per Default durchklicken, optionales ist unnötig

und noch ein Test, ob alles richtig installiert wurde

/home/juergen/verapdf/verapdf --version # je nachdem, wohin man installiert hat

veraPDF 1.10.6
Built: Thu Dec 28 11:58:00 CET 2017
Developed and released by the veraPDF Consortium.
Funded by the PREFORMA project.
Released under the GNU General Public License v3
and the Mozilla Public License v2 or later.

Und so prüft man jetzt ein PDF-File:

/home/juergen/verapdf/verapdf datei.pdf

nach einigen Sekunden gibt es eine SEHR detaillierte XML-Ausgabe, die hoffentlich so aussieht:

<?xml version=“1.0″ encoding=“utf-8″?>
<report>
<buildInformation>
<releaseDetails id=“core“ version=“1.10.2″ buildDate=“2017-11-30T12:47:00+01:00″></releaseDetails>
<releaseDetails id=“validation-model“ version=“1.10.5″ buildDate=“2017-12-28T11:51:00+01:00″></releaseDetails>
<releaseDetails id=“gui“ version=“1.10.6″ buildDate=“2017-12-28T11:58:00+01:00″></releaseDetails>
</buildInformation>
<jobs>
<job>
<item size=“370846″>
<name>datei.pdf</name>
</item>
<validationReport profileName=“PDF/A-1A validation profile“ statement=“PDF file is compliant with Validation Profile requirements.“ isCompliant=“true“>
<details passedRules=“107″ failedRules=“0″ passedChecks=“398094″ failedChecks=“0″></details>
</validationReport>
<duration start=“1519383704755″ finish=“1519383711678″>00:00:06.923</duration>
</job>
</jobs>
<batchSummary totalJobs=“1″ failedToParse=“0″ encrypted=“0″>
<validationReports compliant=“1″ nonCompliant=“0″ failedJobs=“0″>1</validationReports>
<featureReports failedJobs=“0″>0</featureReports>
<repairReports failedJobs=“0″>0</repairReports>
<duration start=“1519383704171″ finish=“1519383711717″>00:00:07.546</duration>
</batchSummary>
</report>

Und siehe da: failedRules=“0″

 

 

Connecting to security.debian.org dauert ewig?

sudo apt-get update

dauert ewig in der Ausführung und es hängt bei

Connecting to security.debian.org

Gut möglich, dass Debian versucht, sich mit IPv6 zu verbinden und ihr Netzwerk nur IPv4 bietet.

Versuchen Sie, Debian das penetrante IPv6 auszutreiben.

sudo nano /etc/default/grub

Suchen Sie die Zeile

GRUB_CMDLINE_LINUX_DEFAULT=“quiet“

und ersetzen Sie sie durch

GRUB_CMDLINE_LINUX_DEFAULT=“quiet ipv6.disable=1″

sudo update-grub
sudo reboot

Sie werden sehen, dass es jetzt bei

sudo apt-get update

nicht mehr hängt.

Ein Papierkorb für Samba

Der Papierkorb für Windows ist eine unleugbar nützliche Sache. Leider arbeitet er nicht mit Netzlaufwerken zusammen, die man zum Beispiel per Samba eingebunden hat.

Aber man kann für Samba selbst einen Papierkorb installieren und versehentlich gelöschte Dateien daraus retten.

Zunächst bearbeiten wir die Konfigurationsdatei von Samba.

sudo nano /etc/samba/smb.conf

Ans Ende des betreffenden Absatzes, der mit [NAME] startet, fügen wir etwas hinzu.

vfs object = recycle
recycle:repository = .recyclebin
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsixe = 0
recycle:exclude = *.tmp,*.temp,*.TMP,*.TEMP,*.log
recycle:excludedir = /recycle,/tmp,/temp,/TMP,/TEMP

Insgesamt sieht es (ungefähr) so aus:

[www]
path = /var/www/
public = yes
writable = yes
comment = smb share
printable = no
guest ok = yes
create mode = 0644
directory mode = 0755
force group = www-data
force user = www-data

vfs object = recycle
recycle:repository = .recyclebin
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsixe = 0
recycle:exclude = *.tmp,*.temp,*.TMP,*.TEMP,*.log
recycle:excludedir = /recycle,/tmp,/temp,/TMP,/TEMP

Die Einträge dürften sich größenteils von selbst erklären. Aber hier noch einmal eine kleine Erläuterung.

recycle:repository = .recyclebin

Das ist der Ordner, der uns als Papierkorb nutzen wird. Er wird beim ersten Löschvorgang mit den richtigen Rechten angelegt. Bei diesem Beispiel: /var/www/.recyclebin

recycle:keeptree = Yes

Die Ordnerstruktur wird in den Papierkorb übernommen. Kann nicht schaden, weil es die Suche einfacher gestaltet.

recycle:touch = Yes

Setzt den letzten Zugriffszeitpunkt auf das Löschdatum. Das ist wichtig, da beim automatischen Leeren eines zu vollen Papierkorbes zu alte, versehentlich gelöschte Dateien sofort entsorgt werden. Wer den Papierkorb nicht automatisch leert, der kann die Option auch weglassen.

recycle:versions = Yes

Für eine Versionierung namensgleicher Dateien.

recycle:maxsixe = 0

Ab welcher Dateigröße soll der Papierkorb nicht gelten und stattdessen sofort gelöscht werden. 0 steht für keine Beschränkung.

recycle:exclude = *.tmp,*.temp,*.TMP,*.TEMP,*.log

Welche Dateien sollen vom Papierkorb ausgeschlossen werden und stattdessen sofort gelöscht werden? Ich empfehle neben den üblichen Verdächtigen wie „tmp“ und „log“ auch Binärdateien, die immer Resultat von anderen Dateien sind, und somit aus der Quelle selbst rekonstruiert werden können. JPEG-Dateien kann man z.B. aus den Photoshop-Dateien wieder herstellen.

recycle:excludedir = /recycle,/tmp,/temp,/TMP,/TEMP

Welche Ordner sollen vom Papierkorb ausgeschlossen werden? Hier gelten anlog meine Anmerkungen zu oben. Mehr Einstellungsmöglichkeiten werden hier: https://www.samba.org/… erläutert.

Zum Schluss starten wir den Samba-Server neu

sudo /etc/init.d/samba restart

Von nun an sollten alle Dateien und Ordner im geteilten Verzeichnis vor versehentlichen Löschen geschützt sind. Sie finden Sie nun, samt Verzeichnisstruktur, unter /var/www/.recyclebin

Test

Bitte unbedingt testen, denn exotische Rechtevergabe kann auch dazu führen, dass der Papierkorb schlicht nicht funktioniert.

VORSICHT: Damit keine Missverständnisse aufkommen, es werden natürlich nur die Dateien in den Papierkorb befördert, die über Samba gelöscht werden, also bspw. von einem unvorsichtigen Windows-Nutzer. Dateien, die direkt über die Shell oder über Skripte gelöscht werden, bleiben davon unberührt und landen weiterhin im Unix-Nirvana.

Automatisches Leeren des Papierkorbes

Das erledigt natürlich cron für uns.

sudo crontab -e

Ans Ende setzen wir folgenden Eintrag für root:

01 00 * * * find /var/www/.recyclebin  -mindepth 1 -atime +7 -print -exec rm -rf {} \;

Dann werden täglich um 00:01 alle Dateien und Ordner im Papierkorb gelöscht, die älter als sieben Tag sind. Das “ -mindepth 1″ verhindert, dass der Papierkorb selbst gelöscht wird, wenn er älter als sieben Tage ist.

Danke

Mein Dank geht an http://blog.is-a-geek.org/… für die Anregungen.