Für einen OPSI-Server habe ich ein kleines Script geschrieben, mit dem mit einem Aufruf die Paßwörter für das System selber, Samba und OPSI in einem Rutsch neu gesetzt werden kann. Bei Nutzung des OPSI-Server mit einer etwas größeren Zahl von Admins bzw. Paket-Zuweisern und Systemaufsetzern ist es ab und zu mal notwendig, daß auch ohne Root-Zugang für Zweite die Paßwörter in allen 3 Systembereichen durch Dritte neu gesetzt werden können:
/usr/local/bin/opsipasswd.sh:
#!/bin/bash## Dirk Dettmering## Script zur gleichzeitigen Aenderung des Passwortes eines Users fuer System, OPSI und Samba# Beim Aufruf des Scriptes muss der Username und das gewuenschtes Paßwort uebergeben werden.#if [ "$2" == "" ]; thenecho ""echo ""echo " Ohne Parameter mag ich aber nicht! ;-) ..."echo ""echo "Dem Script muss Username und gewünschtes Paßwort übergeben werden"echo "Die Reihenfolge ist dabei nicht egal sondern immer erst Username und"echo "dann das Paßwort!"echo "Also bitte so: [sudo] opsipasswd.sh <username> <password>"echo "sudo ist erforderlich, wenn man das Script nicht als root-User aufruft!"echo ""exit 1fiWERBINICH=`whoami | id -u`if [ "$WERBINICH" != "0" ]; thenecho ""echo " Du kleiner Depp, du Depperter! "echo " Muttu root sein oder das Script via sudo aufrufen, damit es funktioniert!"echo ""exit 1fi# System-Passwort setzen:/usr/local/sbin/passwd.exp $1 $2 > /dev/null 2>&1clearif [ $? -gt 0 ]; thenecho "Achtung, das Neusetzen des System-Paßwortes war nicht erfolgreich!"fi# Samba-Passwort setzen:/usr/local/sbin/smbpasswd.exp $1 $2 > /dev/null 2>&1clearif [ $? -gt 0 ]; thenecho "Achtung, das Neusetzen des Samba-Paßwortes mit war nicht erfolgreich!"fi/usr/bin/opsi-admin -d task setPcpatchPassword -u $1 -p $2clearif [ $? -gt 0 ]; thenecho "Achtung, das Neusetzen des OPSI-Paßwortes war nicht erfolgreich!"fi
/usr/local/sbin/smbpasswd.exp:
#!/usr/bin/expect -fset password [lindex $argv 1]spawn smbpasswd -a [lindex $argv 0]expect {-re "password:" {sleep 1; send "$password\r"; exp_continue}-re "password:" {sleep 1; send "$password\r";}}
Das Speichern des Scriptaufrufs in der History verhindere ich dann durch Setzen folgender Shellvariabelen in der /etc/bash.bashrc:
export HISTIGNORE="opsipasswd.sh *:passwd *:smbpasswd *"