Suche
Suche Menü

Mac: sudo mit Touch-ID im Terminal

Will man im Terminal beim Ausführen des sudo-Befehls nicht immer das Passwort eingeben, so kann die Touch-ID konfiguriert werden. Die Konfiguration befindet sich in der Datei /etc/pam.d/sudo.

sudo nano /etc/pam.d/sudo

In der Datei nun auf der zweiten Zeile nach «pam_smarcard.do» folgende Zeile hinzufügen:

auth       sufficient     pam_tid.so

Danach die Datei speichern. Nach dem das Terminal neugestartet wurde, erscheint nun die normale Abfrage zur Eingabe der Touch-ID, sobald ein sudo Befehl ausgeführt wird. Mit «Abbrechen» kann jederzeit auch das Passwort eingegeben werden.

Der Inhalt der Datei /etc/pam.d/sudo sieht nach der Anpassung so aus:

# sudo: auth account password session
auth       sufficient     pam_smartcard.so
auth       sufficient     pam_tid.so
auth       required       pam_opendirectory.so
account    required       pam_permit.so
password   required       pam_deny.so
session    required       pam_permit.so

Softwareverwaltung über winget

winget ist ein Windowspaket Manager über den ähnlich wie unter Linux Anwendungen installiert und aktualisiert werden können. winget ist der einfachste Weg einen PC aktuell zu halten. In diesem Artikel zeige ich wie winget genutzt werden kann.

Die Verwendung von winget beginnt mit dem Öffnen eines PowerShell-Fensters mit Administratorrechten: Drücken Sie die Windows-Taste + X und wählen Sie dann PowerShell (Admin) oder Terminal(Admin) aus dem Popup-Menü. Da winget ein PowerShell-Befehl ist, verwendet es eine einfache PowerShell-Syntax, um Informationen bereitzustellen oder Aktionen auszuführen.

Ist winget noch nicht installiert, so kann dieses über den Windows Store installiert werden.

Zur Abfrage welche Version installiert ist führen wr diesen Befehl aus.

winget –version

Gibt man winget in der Befehlszeile ein und führt in aus, werden die Optionen zum ausführen angezeigt:

PS C:\Users\lb> winget
Windows-Paket-Manager v1.4.10173
Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.

Das “winget”-Befehlszeilenprogramm ermöglicht das Installieren von Anwendungen und anderen Paketen mithilfe der Befehlszeile.

Verwendung: winget [<Befehl>] [<Optionen>]

Folgende Befehle sind verfügbar:
  install    Installiert das angegebene Paket
  show       Zeigt Informationen zu einem Paket an
  source     Verwalten von Paketquellen
  search     Suchen und Anzeigen grundlegender Informationen zu Paketen
  list       Installierte Pakete anzeigen
  upgrade    Zeigt verfügbare Upgrades an und führt sie aus.
  uninstall  Deinstalliert das angegebene Paket
  hash       Hilfsprogramm zum Hashen von Installationsdateien
  validate   Überprüft eine Manifestdatei
  settings   Einstellungen öffnen oder Administratoreinstellungen festlegen
  features   Zeigt den Status von experimentellen Features an
  export     Exportiert eine Liste der installierten Pakete
  import     Installiert alle Pakete in einer Datei

Verfügbare Software auflisten

Mit dem «list» Befehl wird die installierte Software aufgelistet:

winget list

Ausgabe:

PS C:\Users\lb> winget list
Name                                      ID                                        Version          Verfügbar   Quelle
-----------------------------------------------------------------------------------------------------------------------
Bang & Olufsen Audio Control Panel        22094SynapticsIncorporate.BangOlufsenAud… 1.3.98.0
LogiOptionsPowerPointAddin                2C15990041C0A40782166403A24D0F52DFC41095  9.50.19.0
Joplin 2.9.17                             499c114e-8890-5040-9c02-24abe7d3ebe9      2.9.17
LogiOptionsExcelAddin                     5B9DBC017A73395321F758581D1CBC19EA9DF4FF  9.50.19.0
FreeTube 0.18.0                           PrestonN.FreeTube                         0.18.0                       winget
7-Zip 21.06 (x64)                         7zip.7zip                                 21.06            22.01       winget
LogiOptionsWordAddin                      77F95DB8F75F35C40BD868B4D39ADCCB966A0FD1  9.50.19.0
Signal 5.48.0                             OpenWhisperSystems.Signal                 5.48.0           6.15.0      winget
HP Support Assistant                      AD2F1837.HPSupportAssistant_v10z8vjag6ke6 9.25.18.0
HP System Information                     AD2F1837.HPSystemInformation_v10z8vjag6k… 8.10.39.0
Adobe Creative Cloud                      Adobe Creative Cloud                      5.10.0.573
Adobe Notification Client                 AdobeNotificationClient_enpm4xejd91yc     3.0.1.1
Intel® Grafik-Kontrollraum                AppUp.IntelGraphicsExperience_8j3eq9eme6… 1.100.4779.0
ThunderboltTM Kontrollcenter              AppUp.ThunderboltControlCenter_8j3eq9eme… 1.0.36.0
Beyond Compare 4.4.1                      ScooterSoftware.BeyondCompare4            4.4.1.26165      4.4.6.27483 winget
Ubuntu 20.04 on Windows                   Canonical.Ubuntu.2004                     2004.2022.8.0                winget
Ubuntu on Windows                         CanonicalGroupLimited.UbuntuonWindows_79… 2004.2022.1.0
Citrix Workspace 2302                     Citrix.Workspace                          23.2.0.38        23.3.0.55   winget
.....

Alle Programme die in der Spalte Quelle ein «winget» stehen haben, können über winget aktualisiert werden.

Neues Programm installieren

Um ein Programm zu installieren, muss der Befehl winget install [PROGRAMMNAME] genutzt werden. Ist der genaue Programmname nicht bekannt, kann mit winget search [NAME] gesucht werden.

HIer ein Beispiel zu Installation eines Adobe Readers:

C:\Windows\system32>winget search adobe
Name                                         ID                          Version      Übereinstimmung Quelle
-------------------------------------------------------------------------------------------------------------
Adobe Express                                9P94LH3Q1CP5                Unknown                      msstore
Adobe Lightroom                              XPDP264X2DK8NB              Unknown                      msstore
Adobe Acrobat Reader DC                      XPDP273C0XHQH2              Unknown                      msstore
Adobe Fresco                                 XP8C8R0ZKZR27V              Unknown                      msstore
Adobe Creative Cloud                         XPDLPKWG9SW2WD              Unknown                      msstore
Adobe Photoshop Express                      9WZDNCRFJ27N                Unknown                      msstore
Adobe Experience Manager Forms               9ND12RLXTGTT                Unknown                      msstore
Adobe Content Viewer                         9WZDNCRFJBZ1                Unknown                      msstore
Adobe Photoshop Express Toshiba version only 9WZDNCRDFSG4                Unknown                      msstore
Adobe Premiere Elements 2023                 XP8JR4WQQRJMHT              Unknown                      msstore
Avocode                                      Avocode.Avocode             4.15.6       Tag: adobe      winget
Adobe Acrobat Reader DC (64-bit)             Adobe.Acrobat.Reader.64-bit 23.003.20201 Tag: adobe      winget
Adobe Acrobat Reader DC                      Adobe.Acrobat.Reader.32-bit 23.003.20201 Tag: adobe      winget
Adobe DNG Converter                          Adobe.DNGConverter          15.3.1                       winget
Cryptr                                       Adobe.Cryptr                0.5.0                        winget
Brackets                                     Adobe.Brackets              1.14.17770                   winget
Adobe Connect                                Adobe.AdobeConnect          21.11.22                     winget

Mit dem search Befehl wird nun aufgelistet, was alles zum Begriff «Adobe» gefunden wurde. Nun kann ich den Adobe Reader über den Namen in der 2. Spalte installieren:

C:\Windows\system32>winget install Adobe.Acrobat.Reader.64-bit
Gefunden Adobe Acrobat Reader DC (64-bit) [Adobe.Acrobat.Reader.64-bit] Version 23.003.20201
Diese Anwendung wird von ihrem Besitzer an Sie lizenziert.
Microsoft ist nicht verantwortlich und erteilt keine Lizenzen für Pakete von Drittanbietern.
Wird heruntergeladen https://ardownload2.adobe.com/pub/adobe/acrobat/win/AcrobatDC/2300320201/AcroRdrDCx642300320201_MUI.exe
  ██████████████████████████████   410 MB /  410 MB
Der Installer-Hash wurde erfolgreich überprüft
Paketinstallation wird gestartet...
Erfolgreich installiert

Installierte Programme aktualisieren

Um alle Programme zu aktualisieren die auf dem PC installiert sind, wird folgender Befehl genutzt:

winget update --all

MySQL Backups auf der Konsole

Mit den Programmen mysqldump und mysql können Backups einer MySQL Datenbank erstellt und wiederhergestellt werden. Dabei spielt die grösse einer Datenbank keine Rolle, was ein unschlagbarer Vorteil im Vergleich zum phpMyAdmin sein kann.

mysqldump

Der Grundaufruf von mysqldump sieht wie folgt aus:

mysqldump -u [USERNAME] --password="[PASSWORT]" [DATENBANK]  > [BACKUP_DATEI_NAME].sql

Mit weiteren Parametern:

mysqldump --no-tablespaces --extended-insert --compress --quote-names --single-transaction --routines --triggers --opt -u [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB]  > [BACKUP_DATEI_NAME].sql

Will man das Backup gleich auch mit gzip komprimieren:

mysqldump --max_allowed_packet=512M --no-tablespaces --extended-insert --compress --quote-names --single-transaction --routines --triggers --opt -u [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB] | gzip -c > [BACKUP_DATEINAME].sql.gz

mysqldump kann auch via SSH Remote ausgeführt werden. Dazu sollte die Ausführung in eine Scriptdatei ausgelagert werden:

ssh -C -f -L$[FORWARD_PORT]:[MYSQL_SERVER]:[MYSQLPORT -p [SSH_PORT] -i [SSH_PRIVATE_KEY] [SSH_USER]@[SSH_SERVER] sleep 5

mysqldump -h 127.0.0.1 -P $[FORWARD_PORT] --max_allowed_packet=512M --no-tablespaces --extended-insert --compress --quote-names --single-transaction --routines --triggers --opt -u [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB] > [BACKUP_DATEI_NAME].sql

Wenn man der Backupdatei ein Datum hinzufügen will, kann dies wie folgt gemacht werden:

mysqldump -u [USERNAME] --password="[PASSWORT]" [DATENBANK]  > `date +%Y.%m.%d-%H.%M.%S`_DATEINAME.sql'

mysql

Um ein Datenbankbackup wiederherzustellen wird das mysql Programm genutzt:

mysql -u [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB] < [BACKUP_DATEI_NAME].sql

Wenn die Backupdatei mit gzip komprimiert ist.

gunzip < [BACKUP_DATEI_NAME].sql.gz | mysql [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB]

Die Datei auf einem Remoteserver wiederherstellen:

gunzip -c [BACKUP_DATEI_NAME].sql.gz | ssh -p [SSH_PORT] -i [SSH_PRIVATE_KEY] [SSH_USER]@[SSH_SERVER] "mysql -h [MYSQL_SERVER] -P [MYSQL_PORT] -u [MYSQL_USER] --password='[MYSQL_PW]' [MYSQL_DB] 

Mac: SSH Server aktivieren/deaktivieren

Der SSH Server auf einem Mac ist standardmässig deaktiviert. Hier eine Anleitung wie er aktiviert und deaktiviert werden kann.

sudo systemsetup -setremotelogin on

Der Status des SSH-Server kann wie folgt geprüft werden:

sudo systemsetup -getremotelogin

Zum deaktivieren des SSH-Servers folgenden Befehl ausführen:

sudo systemsetup -setremotelogin off

Beim deaktivieren wird gefragt, ob der Server wirklich deaktiviert werden soll. Soll diese Frage auch umgangen werden, kann der Befehl mit force ausgeführt werden:

sudo systemsetup -f -setremotelogin off

Nach dem deaktivieren wieder prüfen, ob das Resultat auch entsprechend ist:

sudo systemsetup -getremotelogin

Mac: Spacer / Separator dem Dock hinzufügen

Um das Dock im Mac ein wenig aufzuräumen und die Icon zu gruppieren, können Spacer hinzugefügt werden.

Im Terminal können die Spacer mit folgenden Befehlen hinzugefügt werden:

Normaler Spacer:

defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}'; killall Dock

Schmaler Spacer:

defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="small-spacer-tile";}'; killall Dock

Quelle

Mac: einen Private Key zum Schlüsselbund hinzufügen

Der native SSH Client von MacOS X kann den Schlüsselbund verwenden um auf das Passwort desselben zugreifen zu können.
Um den Private Key zum Schlüsselbund hinzuzufügen verwende folgenden Befehl:

ssh-add -K /pfad/zum/private/key

Wenn der Private Key unter .ssh abgelegt ist und den Namen id_Mac hat, muss folgender Befehl verwendet werden:

ssh-add -K ~/.ssh/id_Mac

Anschliessend muss das Passwort des Private Keys eingegeben werden. Anschliessend kann dieser Private Key ohne Passwort verwendert werden.

E-Mail signieren und verschlüsseln mit S/MIME

E-Mails können mit S/MIME signiert und verschlüsselt werden. Dieser Standard wird von den meisten E-Mail Clients unterstützt. Um S/MIME nutzen zu können, braucht es ein Zertifikat welches durch eine zentrale Zertifizierungsstelle ausgestellt wird.

Der italienische Anbieter Actalis bietet kostenlose S/MIME Zertifikate an, welche ohne jeglichen Support genutzt werden können. Für Support kann man ein kostenpflichtiges Zertifikat bei diesem oder einem anderen Anbieter erwerben.

Im Online Assistenten von Actalis kann man das Zertifikat mit Eingabe der E-Mailadresse erstellen.

An die E-Mailadresse wird ein Bestätigungscode versandt welcher im zweiten Schritt eingegeben werden muss.

Anschliessend wird das Passwort für das Zertifikat ausgegeben, welches an einem sicheren Ort aufbewahrt werden sollte.

Das Zertifikat selber kommt kurz danach per E-Mail als ZIP-Anhang. Zusätzlich kommen in diesem E-Mail die Zugangsdaten zum Admin-Panel von Actalis in welchem das Zertifikat auch wiederrufen oder verlängert werden kann.
Das Zertifikat wird im Format PFX ausgeliefert.

Zertifikat unter Mac einbinden

Um das Zertifikat in Mac zu installieren, muss man die Schlüsselbundverwaltung öffnen und auf Abschnitt «Anmeldung» klicken. Anschliessend kann das Zertifikat mit einem Doppelklick geöffnet werden. Es folgt die Eingabe des Zertifikat-Passworts und anschliessend ist das Passwort importiert.

Apple Mail nutzt das Zertifikat sofort ohne dass dieses speziell eingerichtet werden muss. Für den Zugriff auf den Schlüsselbund erfolgt jeweils eine Passwortabfrage welche mit «Immer erlauben» auch deaktiviert werden kann.

Zertifikat unter iOS einbinden.

Hierzu habe ich eine schöne Schritt-für-Schritt Anleitung mit Bildern gefunden, welche ich hier verlinke:

https://knowledge.digicert.com/de/de/quovadis/secure-e-mail/mac-ios/Secure-E-Mail-unter-iOS-importieren-und-in-Apple-Mail-konfigurieren.html

Logrotage mit einem bash-Script

Linux rotiert Logfiles in mehreren Stufen. Dabei gibt es verschiedene Möglichkeiten wie diese Logfiles aussehen können.

# Variante 1
logfile.log
logfile.log.0.gz
logfile.log.1.gz
logfile.log.2.gz

# Variante 2
maillog
maillog-20220828
maillog-20220904
maillog-20220911
maillog-20220918

Der Hintergrund eines solchen rotierenden Logfiles ist es, die Dateien einerseits nicht zu gross werden zu lassen und andererseits, sollten sie gzip komprimiert sein, auch Platz zu sparen.

Hier habe hier zwei Varianten für ein solches Logrotate Script:

Logrotate nach fixem Zeitraum

#!/bin/sh

# Log directory
LOGDIR=/data/logs

# Maximum number of archive logs to keep
MAXNUM=30

#Log files to be handled in that log directory 
files=(access.log error.log)

for LOGFILE in "${files[@]}"
do 

## Check if the last log archive exists and delete it.
if [ -f $LOGDIR/$LOGFILE.$MAXNUM.gz ]; then
rm $LOGDIR/$LOGFILE.$MAXNUM.gz
fi

NUM=$(($MAXNUM - 1))

## Check the previous log file.
while [ $NUM -ge 0 ]
do
NUM1=$(($NUM + 1))
if [ -f $LOGDIR/$LOGFILE.$NUM.gz ]; then
mv $LOGDIR/$LOGFILE.$NUM.gz $LOGDIR/$LOGFILE.$NUM1.gz
fi

NUM=$(($NUM - 1))
done


# Compress and clear the log file
if [ -f $LOGDIR/$LOGFILE ]; then
cat $LOGDIR/$LOGFILE | gzip > $LOGDIR/$LOGFILE.0.gz
cat /dev/null > $LOGDIR/$LOGFILE
fi

done

Quelle

Logrotate nach Filegrösse

#!/bin/bash
checkSizeOver() {
  typeset -i LFSB LFSM LOG_SIZE=10
  LF=$1
  LOG_SIZE=$2
  LFSB=$(stat -c "%s" $LF)
  # This is bytes - turn into MB, base 2}
  LFSM=${LFSB}/1048576
  # This is bytes - turn into MB, base 2
  if [ $LFSM -gt $LOG_SIZE ]
    then
      return 0
    else
      return 1
  fi
}

LOG_PATH=$1
OLD_LOG_PATH=$2
for file in $LOG_PATH/*.log
do
  SIZE=10
  NAME=$(basename $file)
  now="$(date +'%Y-%m-%d_%H-%m')"
  if checkSizeOver $file $SIZE;
    then
      DEST=$OLD_LOG_PATH/$NAME.$now
      mv $file $DEST
      echo Logfile $file is greater than $SIZE MB
    else
      echo Logfile $file is less than $SIZE MB
  fi
done

Quelle

AirPod Pro Ladecase lädt nicht an PC

Mein AirPod Pro Ladecase wurde am Windows 10 / 11 PC nicht geladen. Die Lösung des Problem ist:

  • Systemsteuerung öffnen
  • Geräte und Drucker öffnen
    Nun nach dem Case unter «nicht angegeben» suchen
  • Mit der rechten Maustaste auf den Eintrag «AirPod» klicken und auf «Eigenschaften» klicken.
  • Auf den Reiter «Hardware» wechseln und das «USB-Eingabegerät» selektieren und die Eigenschaften öffnen
  • In den Reiter «Treiber» wechseln und das Gerät deaktivieren. Auf dem Printscreen ist es bereits deaktiviert

Danach das Gerät ausstecken und wieder einstecken. Nun funktioniert das Laden.

Offline Backup einer Webseite mit wget

Mit wget lässt sich einfach eine Offline-Backup einer Webseite anlegen

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent -e robots=off --restrict-file-names=windows https://www.webseite.ch

Bedeutung der einzelnen Flags

  • --mirror – Macht den Download rekursiv (Zusammenfassung von -r -l inf -N).
  • --convert-links – Konvertiert alle Links wie z.B. Stylesheets in relative Links, damit sie für die Offline-Anzeige geeignet sind.
  • --adjust-extension – Fügt dem Dateinamen die entsprechende Endung (html oder css) hinzu.
  • --page-requisites – Lädt alle verlinkten Dateien wie Stylesheets, PDFs und Bilder herunter, die für die korrekte Offline-Anzeige der Seite erforderlich sind.
  • --no-parent – Beim Rekursieren wird nicht zum übergeordneten Verzeichnis aufgestiegen. Dies ist nützlich, um den Download auf einen Teil der Website zu beschränken.
  • -e robots=off – ignoriert die robots.txt datei, damit der mirror wirklich vollständig ist
  • --restrict-file-names=windows – Bei Verwendung der «Windows»-Option in Wget werden bestimmte Zeichen wie \, |, /, :, ?, «, *, < und > sowie Steuerzeichen zwischen 0 und 31 und zwischen 128 und 159 umgangen. Im Windows-Modus ersetzt Wget das : durch +, um Host und Port in lokalen Dateinamen zu trennen, und ersetzt das ? durch @, um den Abfrageteil des Dateinamens vom Rest zu trennen. Das bedeutet, dass eine URL wie www.xemacs.org:4300/search.pl?input=blah, die im Unix-Modus gespeichert würde, im Windows-Modus als www.xemacs.org+4300/search.pl@input=blah gespeichert wird.