Dies ist eine alte Version des Dokuments!
Bei vielen Serveradmins kommt es vor, dass mehrere Personen Zugriff auf die Dateien haben. In diesem Artikel werde ich kurz beschreiben, wie man mittels gpg das Passwort vor neugierigen Blicken schützen kann. Es wird das Tool gpg benötigt, dass bei Debian standardmäßig installiert ist. Sollte das Tool fehlen, muss es mit dem distributionsspezifischen Paketmanager installiert werden.
Mit einem Editor muss nach folgendem Schema das Loginscript im Verzeichnis des SteamTools erstellt werden. Login, Password, Installationsverzeichnis weichen natürlich ab und sind dementsprechend anzupassen. In diesem Beispiel wählen wir den Dateinamen login
.
login Benutzer Passwort force_install_dir ./csgo_ds app_update 740 quit
Nachdem die Datei erstellt worden ist, kann mittels gpg die Datei login
synchron verschlüsselt werden. Für die Verschlüsselung nehmen wir die Standardeinstellungen. Für eine genauere Beschreibung der Verschlüsselungsmethoden und Optionsschalter kann im Artikel Symmetrische Verschlüsselung nachgelesen werden. Um die Datei login
zu verschlüsseln rufen wir folgenden Befehl auf:
gpg -c --force-mdc login
Die Passphrase zwei mal eingeben und bestätigen. Es wird die Datei login.gpg
angelegt. Um das Entschlüsseln zu prüfen, kann einmal folgender Befehl aufgerufen werden:
gpg -d login.gpg
Nach der Eingabe der Passphrase, sollte der Text in der Konsole ausgegeben werden. Zusätzlich sollte noch folgende Fehlermeldung zu sehen sein, wenn man den Optionsschalter –force-mdc
nicht verwendet hat:
gpg: WARNUNG: Botschaft wurde nicht integritätsgeschützt (integrity protected)
Diese braucht nicht weiter beachtet zu werden. Aus dem Grund leiten wir die Fehlerausgabe später nach /dev/null
um.
Sofern die Entschlüsselung funktioniert, sollte die Datei login
gelöscht werden. Mit einer Pipe kann man der steam.sh
den entschlüsselten Inhalt der login.gpg
übermitteln:
gpg -d login.gpg 2> /dev/null | STEAMEXE=steamcmd ./steam.sh
Folglich wird steamcmd
durch steam.sh
gestartet. Durch die Verknüpfung mit der Pipe, wartet gpg
immer noch auf die Passphrase, obwohl steamcmd
schon längst gestartet ist. Es sollte vor der Eingabe der Passphrase so aussehen:
Installing breakpad exception handler for appid(steam)/version(1337903821) [ 0%] Checking for available updates... [ 0%] Download complete. [----] Verifying installation... unlinked 0 orphaned pipes Steam Console Client (c) Valve Corporation -- type 'quit' to exit -- Loading Steam3...OK. Loading Steam2...OK.
Ab da passiert nichts mehr. Die Aufforderung die Passphrase einzugeben, sieht man auch nicht. Dennoch wartet gpg im auf die Eingabe. Nachdem die Passphrase eingegeben worden ist, sollte folgender Text in der Konsole zu sehen sein:
Logging in user 'Benutzer' to Steam Public...Success. Steam> Steam>Success! App '740' already up to date. Steam> Steam>Shutting down. . . unlinked 2 orphaned pipes CAsyncIOManager: 0 threads terminating. 0 reads, 0 writes, 0 deferrals. CAsyncIOManager: 1455 single object sleeps, 496 multi object sleeps CAsyncIOManager: 0 single object alertable sleeps, 2 multi object alertable sleeps
In dem Fall war der dedicated Server schon aktuell. Als letztes kann man noch mit folgendem Befehl ein kurzes Script erstellen, dass mit dem Befehl read
arbeitet und das Passwort als Variable an gpg übergibt. Es hat noch den Vorteil, dass auf die Eingabe gewartet wird.
read -p "Passpshrase eingeben: " -s pass gpg --passphrase $pass -d login.gpg 2>/dev/null | STEAMEXE=steamcmd ./steam.sh pass=""
Nur noch ausführbar machen:
chmod u+x ./update.sh
Das Script wird dann einfach mit ./update
ausgeführt.