28.03.2016
Name
rpcclient — Werkzeug für die Ausführung von clientseitigen MS-RPC-Funktionen.
Synopsis
rpcclient [-A AuthDatei] [-c ] [-d DebugEbene] [-h] [-l LogVerz] [-N] [-s ] [-U Benutzername[%Passwort]] [-W Arbeitsgruppe] [-N] [-I ZielIP] {Server}
BESCHREIBUNG
Dieses Werkzeug ist Teil der Samba-Suite.
rpcclient ist ein Werkzeug, das zunächst dafür entwickelt wurde, MS-RPC-Funktionalität in Samba selbst zu testen. Es ist durch mehrere Entwicklungs- und Stabilitätsphasen gegangen. Viele Systemadministratoren haben nun Skripte drumherum geschrieben, um Windows NT-Clients von ihrer UNIX-Workstation aus zu verwalten.
OPTIONEN
Server
Der NetBIOS-Name des Servers, mit dem eine Verbindung hergestellt werden soll. Der Server kann ein beliebiger SMB/CIFS-Server sein. Der Name wird mit der Zeile name resolve order aus smb.conf aufgelöst.
-c|–command=‘BefehlsString’
Führt die mit Semikola getrennten Befehle aus (unten aufgelistet).
-I IP-Adresse
IP-Adresse ist die Adresse des Zielservers. Sie sollte in der Standardnotation “a.b.c.d” angegeben werden.
Normalerweise würde der Client versuchen, einen benannten SMB-/CIFS-Server zu finden, indem er ihn über den NetBIOS-Namensauflösungesmechanismus sucht, der oben beim Parameter name resolve order beschrieben ist. Die Benutzung dieses Parameters zwingt den Client zu der Annahme, dass der Server auf dem Rechner mit der angegebenen IP-Adresse ist, und die NetBIOS-Namenskomponente der Zielressource wird ignoriert.
Für diesen Parameter gibt es keinen Vorgabewert. Wenn er nicht angegeben wird, dann wird er vom Client automatisch wie oben beschrieben bestimmt.
-V
Gibt die Versionsnummer des Programms aus.
-s
Die angegebene Datei enthält die Konfigurationdetails, die der Server benötigt. Die Information in dieser Datei ist zum Teil Server-spezifisch, z.B. welche printcap-Datei benutzt werden soll, enthält aber auch Beschreibungen aller Dienste, die der Server anbieten soll. Siehe smb.conf für weitere Informationen. Der Standardname der Konfigurationsdatei wird beim Kompilieren bestimmt.
-d|–debug=Debug-Ebene
Debug-Ebene ist ein Integer von 0 bis 10. Falls dieser Parameter nicht angegeben wird, ist der Vorgabewert dafür Null.
Je höher der Wert ist, desto mehr Details über die Serveraktivität werden in den Log-Dateien abgespeichert. Auf der Ebene 0 werden nur kritische Fehler und ernstzunehmende Warnungen geloggt. Ebene 1 ist eine vernünftige Ebene beim alltäglichen Betrieb - dabei wird eine kleine Informationsmenge über die ausgeführten Operationen erzeugt.
Die Ebenen höher als 1 erzeugen beachtliche Mengen von Logdaten, und sollten nur bei der Suche nach Problemen verwendet werden. Die Ebenen größer als 3 sind nur für Entwickler gedacht und erzeugen RIESIGE Mengen an Logdaten, von denen die meisten extrem kryptisch sind.
Beachten Sie, dass durch die Angabe dieses Parameters an dieser Stelle der Parameter log level in der Datei smb.conf überschrieben wird.
-l|–logfile=logbasename
Dateiname für Log-/Debug-Dateien. Die Dateierweiterung “.client” wird angefügt. Die Log-Datei wird vom Client niemals entfernt.
-N
Wenn angegeben unterdrückt dieser Parameter die normale Passwortabfrage eines Clients beim Benutzer. Das ist dann nützlich, wenn ein Dienst verwendet wird, der kein Passwort benötigt.
Falls kein Passwort auf der Kommandozeile und dieser Parameter nicht angegeben wird, verlangt der Client ein Passwort.
-k
Versucht eine Authentifikation mittels Kerberos. Nur sinnvoll in einer Active Directory-Umgebung.
-A|–authfile=Dateiname
Mit dieser Option können Sie eine Datei angeben, aus der der Benutzername und das Passwort für eine Verbindung gelesen werden sollen. Das Dateiformat ist:
username = password = domain =
Stellen Sie sicher, dass die Dateirechte den Zugriff durch unerwünschte Benutzer verhindern.
-U|–user=Benutzername[%Passwort]
Setzt den SMB-Benutzernamen oder Benutzernamen und Passwort.
Falls %Passwort nicht angegeben wird, wird der Benutzer danach gefragt. Der Client überprüft zunächst die Umgebungsvariable USER, dann LOGNAME und wenn eine davon existiert, wird sie in Großbuchstaben umgewandelt. Werden diese Umgebungsvariablen nichtgefunden, wird der Benutzername GUEST verwendet.
Eine dritte Option besteht darin, eine Credentials-Datei zu verwenden, mit den Benutzernamen und Passwörtern in Klartext. Diese Option ist ist vor allem für Skripte gedacht, wenn der Administrator die Credentials nicht auf der Kommandozeile oder über Umgebungsvariablen übergeben möchte. Bei dieser Methode sollten Sie sicherstellen, dass die Zugriffsrechte an der Datei unerwünschte Benutzer ausschließen. Siehe -A für weitere Details.
Seien Sie achtsam, wenn Sie Passwörter in Skripten verwenden. Auf vielen Systemen kann man außerdem die Kommandozeile eines laufenden Prozesses mit dem Befehl ps sehen. Um sicherzugehen sollten rpcclient immer erlauben, ein Passwort zu verlangen und es dann direkt eingeben.
-n
Mit dieser Option können Sie den NetBIOS-Namen überschreiben, den Samba für sich selbst benutzt. Das ist identisch damit, dass Sie den Parameter netbios name in der Datei smb.conf setzen. Allerdings hat eine Einstellung auf der Kommandozeile Vorrang vor Einstellungen in smb.conf.
-i
Dies gibt einen NetBIOS-Scope an, mit dem nmblookup beim Generieren von NetBIOS-Namen kommuniziert. Für Details zur Verwendung von NetBIOS-Scopes siehe rfc1001.txt und rfc1002.txt. NetBIOS-Scopes werden sehr selten benutzt. Setzen Sie diesen Parameter nur dann, wenn Sie als Systemadministrator für alle NetBIOS-Systeme zuständig sind, mit denen Sie kommunizieren.
-W|–workgroup=Domäne
Setzt die SMB-Domäne des Benutzernamens. Dies überschreibt die vorgegebene Domäne, die in smb.conf definiert wird. Wenn die definierte Domäne identisch ist mit dem NetBIOS-Namen des Servers, meldet sich der Client unter Verwendung des lokalen SAMs des Servers an (statt des Domänen-SAMs).
-O Socket-Optionen
TCP-Socket-Optionen, die beim Client-Socket eingestellt werden können. Siehe Parameter socket options in der manpage smb.conf, um eine Liste der gültigen Optionen zu sehen.
-h|–help
Gibt eine Zusammenfassung der Kommandozeilenoptionen aus.
BEFEHLE
LSARPC
lsaquery
Fragt Info-Policy ab.
lookupsids
Löst eine Liste von SIDs in Benutzernamen auf.
lookupnames
Löst eine Liste von Benutzernamen in SIDs auf.
enumtrusts
Zählt Domänen auf, denen vertraut wird.
enumprivs
Zählt Privilegien auf.
getdispname
Holt Privilegienname.
lsaenumsid
Zählt LSA-SIDS auf.
lsaenumprivsaccount
Zählt die Privilegien einer SID auf.
lsaenumacctrights
Zählt die Rechte einer SID auf.
lsaenumacctwithright
Zählt Konten mit einem Recht auf.
lsaaddacctrights
Fügt Rechte zu einem Konto hinzu.
lsaremoveacctrights
Entfernt Rechte aus einem Konto.
lsalookupprivvalue
Holt einen Privilegienwert zu seinem Namen.
lsaquerysecobj
Fragt LSA-Sicherheitsobjekt ab.
LSARPC-DS
dsroledominfo
Holt Domänenhauptinformation.
DFS
dfsexist
Fragt DFS-Unterstützung ab.
dfsadd
Fügt eine DFS-Freigabe hinzu.
dfsremove
Entfernt eine DFS-Freigabe.
dfsgetinfo
Fragt DFS-Freigabeinfo ab.
dfsenum
Zählt DFS-Freigaben auf.
REG
shutdown
Entferntes Herunterfahren.
abortshutdown
Abbruch des Herunterfahrens.
SRVSVC
srvinfo
Server-Abfrageinformation.
netshareenum
Zählt Freigaben auf.
netfileenum
Zählt geöffnete Dateien auf.
netremotetod
Holt entfernte Tageszeit.
SAMR
queryuser
Fragt Benutzerinformation ab.
querygroup
Fragt Gruppeninformation ab.
queryusergroups
Fragt Benutzergruppen ab.
querygroupmem
Fragt Gruppenzugehörigkeit ab.
queryaliasmem
Fragt Alias-Zugehörigkeit ab.
querydispinfo
Fragt Display-Information ab.
querydominfo
Fragt Domäneninformation ab.
enumdomusers
Zählt Domänenbenutzer auf.
enumdomgroups
Zählt Domänengruppen auf.
enumalsgroups
Zählt Alias-Gruppen auf.
createdomuser
Erstellt Domänenbenutzer.
samlookupnames
Sucht Namen.
samlookuprids
Sucht rids.
deletedomuser
Löscht Domänenbenutzer.
samquerysecobj
Fragt SAMR-Sicherheitsobjekt ab.
getdompwinfo
Holt Info zum Domänenpasswort.
lookupdomain
Sucht Domäne.
SPOOLSS
adddriver []
Führt einen RPC-Aufruf von AddPrinterDriver() aus, um den Druckertreiber auf dem Server zu installieren. Beachten Sie, dass die Treiberdateien in dem Verzeichnis, das von getdriverdir zurückgegeben wird, schon existieren sollten. Mögliche Werte für Arch sind die gleichen wie beim Befehl getdriverdir. Der Parameter Konfig ist wie folgt definiert:
Long Printer Name:\ Driver File Name:\ Data File Name:\ Config File Name:\ Help File Name:\ Language Monitor Name:\ Default Data Type:\ Comma Separated list of Files
Alle leeren Felder sollten als String “NULL” eingegeben werden.
Samba braucht das Konzept von Druckmonitoren nicht zu unterstützen, da diese nur auf lokalen Druckern anwendbar sind, deren Treiber auf einer bidirektionalen Verbindung kommunizieren können. Dieses Feld sollte “NULL” sein. Auf einem entfernten NT-Druckserver muss der Druckmonitor für einen Treiber schon vor dem Treiber selbst installiert sein, sonst versagt der RPC-Aufruf.
Mit dem Parameter Version können Sie die Versionsnummer des Druckertreibers angeben. Wenn er weggelassen wird, wird die vorgegebene Treiberversion für die angegebene Architektur benutzt. Mit dieser Option können Druckertreiber von Windows 2000 (Version 3) hochgeladen werden.
_addprinter _Fügt einen Drucker auf dem entfernten Server hinzu. Dieser Drucker wird automatisch freigegeben. Seien Sie sich im Klaren darüber, dass der Druckertreiber auf dem Server schon installiert sein muss (siehe adddriver) und Port ein gültiger Portname sein muss (siehe enumports)._deldriver_Löscht den angegebenen Druckertreiber für alle Architekturen. Dabei werden nicht die eigentlichen Treiberdateien vom Server gelöscht, sondern nur der Eintrag aus der Treiberliste des Servers._enumdata_Zählt alle auf dem Server gespeicherten Druckereinstellungsdaten auf. Auf Windows NT-Clients werden diese Werte in der Registry gespeichert, während Samba-Server sie in den Drucker-TDB speichern. Dieser Befehl entspricht der Funktion GetPrinterData() des SDK auf der MS-Plattform (* Dieser Befehl ist im Moment nicht implementiert).enumdataex
Zählt Druckerdaten zu einem Schlüssel auf.
enumjobs
Listet die Aufträge und den aktuellen Status eines gegebenen Druckers auf. Dieser Befehl entspricht der Funktion EnumJobs() des SDK auf der MS-Plattform.
enumkey
Zählt die Druckerschlüssel auf.
enumports [Ebene]
Führt einen Aufruf von EnumPorts() mit der angegebenen Informationsebene aus. Momentan werden nur die Ebenen 1 und 2 unterstützt.
_enumdrivers [Ebene]_Führt einen Aufruf von EnumPrinterDrivers() aus. Dadurch werden die verschiedenen installierten Druckertreiber für alle Architekturen aufgelistet. Lesen Sie die SDK-Dokumentation zur MS-Plattform für weitere Details zu den verschiedenen Flags und Aufrufoptionen. Momentan werden die Informationsebenen 1, 2 und 3 unterstützt._enumprinters [Ebene]_Führt einen Aufruf von EnumPrinters() aus. Dadurch werden die verschiedenen installierten Freigabedrucker aufgelistet. Lesen Sie die SDK-Dokumentation zur MS-Plattform für weitere Details zu den verschiedenen Flags und Aufrufoptionen. Momentan werden die Informationsebenen 1, 2 und 5 unterstützt._getdata <Wertname;>_Erhalte die Daten für die angegebene Druckereinstellung. Siehe den Befehl enumdata für weitere Informationen. Dieser Befehl entspricht der Funktion GetPrinterData() des SDK auf der MS-Plattform.getdataex
Holt Druckertreiberdaten mit Schlüsselname.
_getdriver _Holt die Druckertreiberinformation (z.B. Treiberdatei, Konfigurationsdatei, abhängige Dateien etc. …) zum angegebenen Drucker. Dieser Befehl entspricht der Funktion GetPrinterDriver() des SDK auf der MS-Plattform. Momentan werden die Informationsebenen 1, 2 und 3 unterstützt._getdriverdir _Führt den RPC-Aufruf GetPrinterDriverDirectory() aus, um den SMB-Freigabenamen und das -Unterverzeichnis zu holen, in dem Druckertreiberdateien für die angegebene Architektur gespeichert werden. Mögliche Werte für Arch sind “Windows 4.0” (für Windows 95/98), “Windows NT x86”, “Windows NT PowerPC”, “Windows Alpha_AXP” und “Windows NT R4000”.getprinter
Holt die aktuelle Druckerinformation. Dieser Befehl entspricht der Funktion GetPrinter() des SDK auf der MS-Plattform.
getprintprocdir
Holt das Verzeichnis des Druckprozessors.
openprinter
Führt die RPC-Aufrufe OpenPrinterEx() und ClosePrinter() auf dem angegebenen Drucker aus.
_setdriver _Führt den Befehl SetPrinter() aus, um den Druckertreiber zu aktualisieren, der mit einem installierten Drucker verbunden ist. Der Druckertreiber muss auf dem Druckerserver bereits korrekt installiert sein.Siehe auch die Befehle enumprinters und enumdrivers, um eine Liste von installierten Druckern und Treibern zu erhalten.addform
Fügt Form hinzu.
setform
Setzt Form.
getform
Holt Form.
deleteform
Löscht Form.
enumforms
Zählt Form auf.
setprinter
Setzt Druckerkommentar.
setprinterdata
Setzt REG_SZ-Druckerdaten.
rffpcnex
Rffpcnex-Test
NETLOGON
logonctrl2
Logon Control 2
logonctrl
Logon Control
samsync
SAM-Synchronisation
samdeltas
Abfrage von SAM-Deltas
samlogon
SAM-Logon
ALLGEMEINE BEFEHLE
debuglevel
Setzt die aktuelle Debugebene zum Loggen von Information.
help (?)
Gibt eine Liste aller bekannten Befehle aus bzw. eine erweiterte Hilfe zu einem bestimmten Befehl.
quit (exit)
Beendet rpcclient.
FEHLER
rpcclient ist als Testwerkzeug für Entwickler entworfen worden und ist in manchen Bereichen evtl. nicht allzu robust, z.B. beim Parsen der Kommandozeile. Es ist bekannt, dass es bei Fehlern einen Core-Dump generiert, wenn ungültige Parameter an den Interpreter übergeben werden.
Dies ist ein Auszug von Luke Leightons urspünglicher Manpage zu rpcclient:
WARNUNG! Der MSRPC-via-SMB-Code wurde ausgehend von der Untersuchung von Netzwerk-Traces entwickelt. Vom ursprünglichen Hersteller (Microsoft) ist keine Dokumentation darüber vorhanden, wie MSRPC via SMB funktioniert oder wie die individuellen MSRPC-Dienste funktionieren. Es konnte gezeigt werden (und wurde berichtet), dass Microsofts Implementation dieser Dienste an einigen Stellen ein wenig … verrückt ist.
Die Entwicklung von Sambas Implementation ist ebenfalls ein wenig grob, und mit wachsender Anzahl verstandener Dienste kann sie sogar zu Versionen von smbd(8) und rpcclient führen, die bei manchen Befehlen oder Diensten inkompatibel sind. Außerdem schicken Entwickler Fehlerberichte an Microsoft und die gefundenen bzw. berichteten Probleme werden in Service-Packs repariert, die auch zu Inkompatibilitäten führen können.
VERSION
Diese Manpage ist korrekt für die Version 3.0 der Samba-Suite.
AUTOR
Die originale Samba-Software und die zugehörigen Werkzeuge wurden von Andrew Tridgell geschrieben. Samba wird nun vom Samba-Team als ein Open-Source-Projekt entwickelt, ähnlich wie der Linux-Kernel.
Die ursprüngliche rpcclient-Manpage wurde von Matthew Geddes und Luke Kenneth Casson Leighton geschrieben und von Gerald Carter überarbeitet. Die Umwandlung ins DocBook-Format wurde von Gerald Carter für Samba 2.2 durchgeführt. Die Umwandlung in DocBook für XML 4.2 wurde von Alexander Bokovoy für Samba 3.0 durchgeführt.