CGI ist nicht tot zu bekommen. Warum auch? Ist es doch eine (für den Admin) coole Lösung um mal fix ein BASH Skript zu schreiben und dieses durch eine URL angetriggert auszuführen.
Leider läuft das ganze nicht out-of-the-Box, daher müssen folgende Dinge auf einem CentOS System passieren, damit es funktioniert:
yum install -y fcgiwrap.x86_64 spawn-fcgi
damit haben wir dann schon die Grundlage geschaffen.
Nun müssen wir noch spawn-fcgi konfigurieren, damit es später mit unserem NGINX zusammenspielt:
cat << EOF > /etc/sysconfig/spawn-fcgi
FCGI_SOCKET=/var/run/fcgiwrap.socket
FCGI_PROGRAM=/usr/sbin/fcgiwrap
FCGI_USER=nginx
FCGI_GROUP=nginx
FCGI_EXTRA_OPTIONS="-M 0777"
OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM"
EOF
damit legen wir nach dem Start einen unix socket für die Kommunikatio unter /var/run/fcgiwrap.socket an und übergeben die Rechte an NGINX.
Nun machen wir uns noch ein Skriptverzeichnis:
mkdir -p -m 770 /var/www/cgi-bin
chown -vR nginx:nginx /var/www/cgi-bin
und natürlich müssen wir unserem NGINX beibringen mit dem Dienst zu reden - dazu nutzen wir eine location directive:
location / {
root /var/www/cgi-bin;
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
im Anschluss müssen wir unsere Dienste noch aktualisieren:
systemctl enable spawn-fcgi
systemctl start spawn-fcgi
systemctl restart nginx
von nun an sollten wir in der Lage sein Skripte unter /var/www/cgi-bin über den Aufruf innerhalb der URL anzusprechen und zur Ausführung zu bewegen. Ein Skript sollte übrigens in etwa so beginnen:
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<html>"
echo "<head>"
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">"
echo "<title>Bash CGI script</title>"
echo "</head>"
echo "<body>"
echo ""
echo ""
echo ""
echo "</body>"
echo "</html>"
Same as everytime... works for me very fine :)
sudo dnf upgrade -y
sudo dnf upgrade --refresh
sudo dnf install dnf-plugin-system-upgrade
sudo dnf system-upgrade download --releasever=31
sudo dnf system-upgrade reboot
Quellen und Links
Hin und wieder macht es ja durchaus Sinn einen zentralen Directory-Service zu nutzen. So zum Beispiel, wenn man mehrere Benutzer hat, und keine Lust versprürt alles doppelt und dreifach zu verwalten.
In meinem Fall ist es OpenLDAP (was übrigens neben dem hässlichen Entlein auch ne ziemlich geile Sau ist und deutlich verkannt wird).
Nachdem PAM Authentifzierung für einen SFTP Server auf einem Debian ziemlich eckelig einzurichten war, habe ich mich gefreut, dass es bei meiner bevorzugten Linux Distribution (CentOS) dann doch wesentlich angenehmer geht. Wer es also einfach haben will, der folgt der Anleitung in Quellen und Links. In meinem Fall reichte es schon das Kommando:
authconfig --updateall --enableldap --enableldapauth
Auszuführen.
Bemerkung: das ging natürlich nur, weil ich die anderen Schritte schon ausgeführt hatte. Memo an mich selbst:
yum install nss-pam-ldapd openssl nscd
#edit /etc/nslcd.conf
vi /etc/nslcd.conf
# enable authconfig things+
authconfig --updateall --enableldap --enableldapauth
# enable and start services
systemctl enable nslcd
systemctl restart nslcd
Quellen und Links