Tag Archives: root

dpkg-repack – Installationen neu einpacken

Auf Debian basierendem Systemen (z.B. Ubuntu) kannst du bereits installierte Pakete neu einpacken und in ein .deb Datei speichern, um dieses z.B. mit der selben Konfiguration auf einem anderem System zu installieren.

Installation:

aptitude install dpkg-repack

Syntax:

dpkg-repack [--root=dir] [--arch=architecture] [--generate] packagename [packagename ...]

weitere Infos zu “dpkg-repack” findest du in der Man-Page

man dpkg-repack

su & sudo & Setuid-Bit

Um unter Linux Root-Rechte zu erhalten, kann man entweder direkt root werden (su) oder sich einige Root-Rechte beschaffen (sudo) oder man führt eine Datei aus, welche die passenden Rechte ausweist.

su: ( substitude user ) [ Benutzer austauschen ]

z.B.:

su user_1

Nur root kann direkt zu einem andern Benutzer wechseln, für alle andern gilt, dass man das entsprechende Kennwort wissen muss.

Um nun Root zu werden und auch dessen Einstellungen (Umgebungsvariablen) zu erhalten, tippst du folgenden Befehl.

su -

Das “-“-Zeichen bewirkt in diesem Fall, dass auch die Umgebungsvariablen von root gesetzt werden.

whoami

Dieser Befehl zeigt an, wer du momentan bist…

mit dem “su”-Befehl kann man auch einzelne Kommandos als root ausführen

z.B.:

su -c "less /var/log/messages"

sudo: ( substitute user, do ) [ ausgetauschter Benutzer macht ]

Noch besser/sicherer ist es mittels sudo zu arbeiten, denn hier musst du das Root-Passwort, dem entsprechendem Benutzer gar nicht mitteilen und er kann trotzdem ausgewählte Kommandos mit Root-Rechten ausführen.

sudo-Konfiguration:

vim /etc/sudoers

user_1 ALL = (ALL) ALL

der Benutzer “user_1″ hat nun mittels sudo komplette Root-Rechte

z.B.:

sudo su -

user_2 ALL = /sbin/shutdown

der Benutzer “user_2″ kann mit sudo nun den PC/Server heruntergefahrenen

z.B.:

sudo shutdown -h now

user_2,user_3 ALL = /sbin/shutdown

somit kann man mehreren Benutzern entsprechende Rechte zuweisen

Defaults timestamp_timeout = 0

wenn man diese Zeile in “/etc/sudoers” einträgt, muss das (eigene) Passwort bei jedem sudo-Befehl erneut eingegeben werden

wenn ein sudo-Befehl von einem Benutzer ausgeführt wird, welcher die entsprechenden Rechte nicht hat, so wird eine E-Mail generiert und der root-User darüber informiert

weitere Infos:
wiki.ubuntuusers.de/sudo/Konfiguration

chmod: [ Setuid-Bit ]

Vor einiger Zeit habe ich in folgendem Beitrag erwähnt, dass man auch mittel “chmod” andere Rechte bekommen kann. -> chmod

Hier ein entsprechendes Beispiel:

Um einer ganzen Gruppe ausführbare Root-Rechte auf ein bestimmtes Programm zu geben, könnte man auch ein “Setuid-Bit” setzten.

chown root:gruppe_1 /sbin/shutdown
chmod ug=rx,u+s /sbin/shutdown

MySQL root Passwort zurücksetzen

Wer sein root MySQL-Server Passwort vergessen hat, kann es mit folgendem HowTo wieder zurücksetzen…

füge folgenden Inhalt in eine neue Datei ein… ->

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MeinNeuesPasswort');"

nun müssen wir den MySQL-Server stoppen ->

/etc/init.d/mysql stop

und den MySQL-Server mit dem neuen Passwort starten ->

mysqld_safe --init-file=/PFADZUMFILE/FILE

nun nur noch ein restart des MySQL-Servers und Fertig…

/etc/init.d/mysql restart

alternativ kann man dies auch umgekehrt machen…

wir müssen den MySQL-Server wieder stoppen ->

/etc/init.d/mysql stop

dann den MySQL Daemon im safe-Mode starten ->

mysqld_safe --skip-grant-tables

per root in MySQL einloggen… ->

mysql --user=root mysql

und folgende Kommandos ausführen ->

UPDATE USER SET PASSWORD=PASSWORD('MeinNeuesPasswort') WHERE USER='root';
flush privilesges;
exit;

nun nur noch mysql-Server neu-starten und fertig…

/etc/init.d/mysql restart

jetzt nur nicht wieder das Passwort vergessen ;)

mount über SSH

Wer per ssh z.B. ein bestimmtes Verzeichnis oder einen ganzen Server über ssh mounten möchte kann dies wie folgt unter Debian / Ubuntu bewerkstelligen.

aptitude install sshfs
mkdir -p ~/mnt/server
sshfs -o idmap=user root@server:/ ~/mnt/server

Mit “afuse” kann man das Verzeichnis auch automatisch mounten, sobald man darauf zugreift (man sollte ssh-keys verwenden, ansonsten muss man immer das Passwort eingeben…)

aptitude install afuse sshfs
mkdir ~/sshfs
afuse -o mount_template="sshfs %r:/ %m" -o unmount_template="fusermount -u -z %m" ~/sshfs
cd ~/sshfs/root@server

Sobald man also mit “cd” in das Verzeichnis “~/mnt/server” wechselt springt der “afuse-Automounter” an und mountet das System via “sshfs”. Dabei wird die UserId, über welche man sich angemeldet hat, immer auf die lokale gemapped. Die Verwendung des SSH-Agent/SSH-Keys ist hier ganz nützlich – andernfalls poppt ein Passwort-Dialog auf, in welchem du dich anmelden musst.

find – Linux

Es folgen einige Beispiele, wie man den “find-Befehl” nutzen kann… viel Spaß beim ausprobieren.

find -size +10M -20M -exec ls -lah {} \;

-> Sucht Dateien ab dem aktuellen Verzeichnis, die gräßer sind als 10MB, aber kleiner als 20MB und zeigt diese an.

find /home/ -iname '*.jpg' -exec tar -czf bilder.tar.gz {} \;

-> Ab dem home-Verzeichnis nach Dateien suchen, die auf “.jpg/.JPG” enden duchsuchen und diese archivieren.

find / -used 1

-> Ab dem root-Verzeichnis alle Dateien suchen, welche heute (1 -> Tag) verwendet wurde.

find / -amin -10 [ -atime -10 ]

-> Ab dem root-Verzeichnis alle Dateien suchen, auf denen vor weniger als 10 Minuten [ Tage ] zugegriffen wurde.

find / -mmin +10 [ -mtime +10 ]

-> Ab dem root-Verzeichnis alle Dateien suchen, welche vor mehr als 10 Minuten [ Tage ] geändert wurden.

touch --date='15:00' /tmp/ref
find / -newer /tmp/ref

-> Ab dem root-Verzeichnis alle Dateien suchen, welche neuer sind als heute um 15:00 Uhr.

find / -type f -name "*neu*"

-> Ab dem root-Verzeichnis alle Dateien suchen, in welchen “neu” vorkommt.

find / -type d -name "*home*"

-> Ab dem root-Verzeichnis alle Verzeichnisse suchen, in welchen “home” vorkommt.

find . -empty

-> Im aktuellen Verzeichnis nach Dateien suchen, welche eine Größe von “null” haben.

find /home/ -user root [ -group root ]

-> Ab dem home-Verzeichnis nach Dateien suchen, welche dem User “root” [ der Gruppe "root" ] gehören.

find /home/ ! -user root [ ! -group root ]

-> Ab dem home-Verzeichnis nach Dateien suchen, welche nicht dem User nicht “root” [ nicht der Gruppe "root" ] gehören.


Es folgt noch ein Beispiel + Erklärung:

# alle Dateien (type f) die älter als 30 Tage (mtime +30) sind außer alt_datum.tar.bz2 (exclude-from alt_`date +%d-%m-%y`.tar.bz2), werden zu einem Archiv zusammengefasst
find / -type f -mtime +30 --exclude-from=alt_`date +%d-%m-%y`.tar.bz2 -exec tar -cjf alt_`date +%d-%m-%y`.tar.bz2 {} \;
# nun alle Dateien, die älter als 30 Tage sind löschen
find / -type f -mtime +30 --exclude-from=alt_`date +%d-%m-%y`.tar.bz2 -exec rm {} \;
# alle Dateien welche den Namen “alt_irendwas.tar.bz2″ haben (ianme “alt_*.tar.bz2″, werden gelöscht
find / -type f -iname "alt_*.tar.bz2" -mtime +60 -exec rm {} \;