Das wichtigste bei Linux Shell Scripten ist der Shebang! Er gibt an, mit welchem Scriptinterpreter die Datei ausgeführt wird und steht in der ersten Zeile eines Scriptes. Für Bash-Scripte lautet er
#!/bin/bash
Das wichtigste bei Linux Shell Scripten ist der Shebang! Er gibt an, mit welchem Scriptinterpreter die Datei ausgeführt wird und steht in der ersten Zeile eines Scriptes. Für Bash-Scripte lautet er
#!/bin/bash
mount -t cifs -o username=benutzer,password=PW,domain=domain.com //10.0.0.1/Freigabe /mnt
Wenn man das Passwort weg lässt, wird nach dem Absetzen des Kommandos das Passwort abgefragt. Nach dem Mount stehen die üblichen Linux Kommandos zur Verfügung.
smbclient verhält sich wie FTP. Pro Aufruf kann nur eine Datei übergeben werden.
smbclient -U benutzername%passwort //10.0.0.1/Freigabe --directory "Unterverzeichnis von Freigabe" -c 'put "test.pdf"'
Mit dem –directory Parameter wird ein Unterverzeichnis innerhalb der Freigabe angegeben.
Bei meinen Tests konnte ich keine Dateien mit Lehrzeichen kopieren, daher ist diese Methode untauglich. Entweder mounten oder jede einzelne Datei per smblient, wie oben beschrieben, kopieren. Wobei das Mounten deutlich komfortabler ist und nach dem Mount die üblichen Linux Kommandos zur Verfügung stehen.
Laut der manpage für smbclient benötigt man das commando mget um Dateien auf das System zu kopieren und mput, um Dateien von dem System in ein Remoteverzeichnis zu kopieren. Mask und Recursion muss gesetzt sein. Dann welchselt man mit cd in das Verzeichnis, welches kopiert werden soll.
smbclient '\\server\freigabe' mask "" recurse ON prompt OFF cd 'pfad\zum\remote\ziel' lcd '~/lokaler/pfad/' mput *
Alles in einer Zeile:
smbclient -U benutzername%passwort '\\server\freigabe' -c 'prompt OFF;recurse ON;cd 'path\to\directory\';lcd '~/path/to/download/to/';mget *'
Um vor dem Senden einer Nachricht ein VBA-Script ausführen zu können, wird im speziellen Outlook Modul ThisOutlookSession
die Funktion Application_ItemSend
genutzt. Hier wird beispielhaft ein Script gezeigt, welches auf das Vorhandensein von externen Empfängern prüft und gewarnt, sobald ein externer Empfänger in der Adressatenliste (To, CC, BCC) vorhanden ist.
Die Informationen zu den ActiveSync Geräten sind an 2 Stellen gespeichert. Einmal im AD-Benutzerobject und einmal im MAPI-Postfach des Excahgen Benutzers. Wenn man über die Exchange Management Konsole beim Löschversuch die Meldung erhält, dass das Active Directory Objekt nicht gefunden werden konnte, ist es gut möglich, dass es sich um einen Eintrag im MAPI-Postfach handelt, der sonst nirgendwo mehr referenziert wird. Ich erläutere hier kurz, von einfach nach schwer, wie die Verwaisten ActiveSync-Geräte gelöscht werdne können.
Erstmal alle alten Geräte auflisten oder exportieren
Get-ActiveSyncDeviceStatistics -Mailbox adresse@domain | where { ($_.LastSyncAttemptTime -lt (get-date 31.12.2017)) } | fl guid, LastSyncAttemptTime, DeviceFriendlyName, Identity Get-ActiveSyncDeviceStatistics -Mailbox adresse@domain | where { ($_.LastSyncAttemptTime -lt (get-date 31.12.2017)) -and ($_.LastSyncAttemptTime) } | export-csv dateiname.csv -Delimiter ";" -NoTypeInformation -encoding "UTF8"
Nun kann man versuchen die Geräte über die Powershell, anhand der guid, zu löschen
Remove-ActiveSyncDevice -id a6115a25-0424-4ce9-a4b9-175f124d30a7
Wenn das nicht funktioniert wird es heftiger. Zuerstmal lädt man sich MFCMAPI in der aktuellen Version runter https://github.com/stephenegriffin/mfcmapi.
Nun gibt man sich über die Exchange Managementkonsole Vollzugriff auf das entsprechende Benutzerpostfach und konfiguriert es lokal in einem eigenständigen Profil (Outlook muss installiert sein). Das Postfach muss für den Online-Modus konfiguriert sein. Im Cache-Modus sind die entsprechenden Ordner nicht sichtbar.
Ab hier Auszug aus der original Hilfe, muss noch angepasst werden.
Ok we finally got this resolved. In the end i had to go to http://mfcmapi.codeplex.com/releases/view/66930 download mfcmapi on a workstation that had outlook installed, configure the profile, and then launch this program. Once there i saw the hidden device and you can delete the folder for that device. So when you launch mfcmapi, go to Session -> Logon and Display Store Table. That is where you create the profile for the afflicted user. Double-click on the user once it loads, and then click root container, and expand ExchangeSyncData. I saw three device folders starting with AirSync-xxxxxx I found the right one i needed to remove and right-click, chose delete folder, and selected the checkbox for Hard Delete. Once done, i closed the program and verified in the EMC it was no longer there. Another command I found to see the device in the EMS was the following:
get-activesyncdevicestatis
Funny how it does not show up via the other command. MS claimed that it was a bug where the mobile device was attached prior to us migrating from Ex2003 to 2010, however, we never had AS working in 2003, nor did the user have any mobile devices attached/partnered to his account
Geschützte Active Directory Einträge mit ADSI-Edit löschen
Es war noch ein Gerät im AD eingetragen, welches sonst nirgendwo auftauchte und deshalb über ADSI-Edit gelöscht werden konnte.
Das Paket sudo muss installiert sein.
man sudoers
# /etc/sudoers Defaults lecture_file = /etc/sudoers.lecture Defaults lecture = always # lecture nicht nur einmal anzeigen
In dieser Anleitung fasse ich die Schritte zusammen, die Unter Debian 9 nötig waren, um eine Sambafreigabe mit einer Active Directory Integration zur Benutzerauthentifizierung zu realisieren. Die einrichtung eines Domain Controllers, der das AD bereit stellt, ist ein anderes Thema.
Samba versucht in den von mir bisher eingestezten Versionen per Default über SMBv1 zu kommunizieren und wird bei neueren Windows Versionen damit scheitern. SMBv1 ist dort aufgrund der bekannten Schwachstellen abgeschaltet. Um Samba auf neuere Versionen von SMB zu zwingen fügt man in der Konfigurationsdatei smb.conf (/etc/samba/smb.conf) folgende Zeile hinzu, in der Section [global]:
min protocol = SMB2
Auf folgende Schritte gehe ich hier nicht weiter ein, weil die klar seien sollten:
Wir benötigen folgende Pakete:
apt-get install ntp krb5-user samba smbclient winbind libnss-winbind libpam-winbind
Kerberos, also auch Active Directory, ist sehr empfindlich, wenn es um Zeit geht. Wir nutzen als NTP Server also unseren Active Directory NTP Server.
# /etc/resolv.conf domain domain.com search domain.com nameserver 10.5.5.51 nameserver 10.5.5.52 # /etc/network/interfaces iface eth0 inet static [...] dns-nameservers 10.5.5.51 10.5.5.56 dns-search domain.com
Kerberos konfigurieren
Kerberos ist ein Ticketbasierter Mechanismus, zur Authentifizierung von Benutzern über ein unsicheres Netzwerk. Die Architektur folgt dem Client-Server-Modell.
Microsoft hat einen Artikel darüber, wie Kerberos im Active Directory verwendet wird
Wir müssen Kerberos konfigurieren, um die AD-Benutzer auf dem Linuxsystem authentifizieren zu können.
# /etc/krb5.conf [libdefaults] ticket_lifetime = 24h default_realm = DOMAIN.COM forwardable = true [realms] DOMAIN.COM = { kdc = 10.5.5.51 default_domain = DOMAIN.COM } [domain_realm] .domain.com = DOMAIN.COM domain.com = DOMAIN.COM [kdc] profile = /etc/krb5kdc/kdc.conf [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false } [logging] kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmin.log default = FILE:/var/log/krb5lib.log
Es muss kein Dienst neu gestartet werden. Wir prüfen nun mit dem Befehl kinit
, ob die Kerberos-Konfiguration richtig ist, indem wir ein Ticket für einen Active Directory Benutzer anfordern.
kinit Benutzer Password for Benutzer@DOMAIN.COM:
Mit dem Befehl klist
prüfen wir ob ein valides Ticket ergeben wurde
klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: Benutzer@DOMAIN.COM Valid starting Expires Service principal 18.06.2018 18:02:28 19.06.2018 04:02:28 krbtgt/DOAMIN.COM@DOMAIN.COM erneuern bis 19.06.2018 18:02:28
Nsswitch konfigurieren
Mit nsswitch lässt sich der Name Service Dispatcher konfigurieren. Wir konfigurieren ihn so, dass auch Benutzer aus dem Active Directory akzeptiert werden. Dies passwiert über den Umweg des Daemons winbindd. Samba nutzt winbind zur Nutzerauthentifizierung, nach dem Beitritt in die Domäne. Die Nutzung von winbind werden wir später auch in der Samba-Konfigurationsdatei konfigurieren. Folgende Zeilen sind anzupassen:
# /etc/nsswitch.conf
passwd: files winbind group: files winbind shadow: files gshadow: files
Samba konfigurieren
# /etc/samba/smb.conf [global] security = ads realm = DOMAIN.LOCAL workgroup = HRG idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes winbind cache time = 10 winbind use default domain = yes template homedir = /home/%U template shell = /bin/bash client use spnego = yes client ntlmv2 auth = yes encrypt passwords = true restrict anonymous = 2 domain master = no local master = no preferred master = no os level = 0 load printers = no printing = bsd printcap name = /dev/null disable spoolss = yes min protocol = SMB2 [exampleshare] comment = a comment path = /home/exampleshare browseable = yes read only = no writeable = yes #inherit acls = yes #inherit permissions = yes create mask = 0660 directory mask = 0770 valid users = +"DOMAIN\Gruppe" admin users = +"DOMAIN\Gruppe" <-- optionally define your ads groups with admin rights
Den Realm in der Konfig auf den korrekten Domänennamen anpassen.
Datei speichern und Dienste neu starten. Das unter path angegebene Verzeichnis muss die entsprechende Berechtigung haben, damit die AD-Gruppen dort rein schreiben dürfen. Evtl. muss man die Datei und Verzeichnismasken anpassen auf 0666 und 0777.
Der winbind Dienst wird versagen, wenn wir die Dienste neu starten, da wir der Domäne noch nicht beigetreten sind. Das holen wir im nächsten Schritt nach.
/etc/init.d/winbind restart /etc/init.d/nmbd restart /etc/init.d/smbd restart
Dazu erstellen wir ein Kerberos Ticket für einen Domänenadministrator und benutzen das Ticket, um der Domäne beitzutreten.
kinit Administrator net ads join -U administrator
Enter Administrators's password: Using short domain name -- DOMAIN Joined 'COMPUTERNAME' to dns domain 'domain.com' DNS Update for computername.domain.com failed: ERROR_DNS_UPDATE_FAILED DNS update failed: NT_STATUS_UNSUCCESSFUL
Dass die Fehlermeldung wegen dem DNS erscheint ist normal. Einfach manuell auf dem DNS Server einen A und einen PTR Record anlegen. Der PTR Record wird normalerweise sogar automatisch beim Erstellen des A Records mit angelegt.
Dienste neu starten. Sollte nun alles klappen.
/etc/init.d/winbind restart /etc/init.d/nmbd restart /etc/init.d/smbd restart
Update des PAM (Pluggable Auhtentication Module)
pam-auth-update
Prüfen ob die Vertrauensstellung gegeben ist:
wbinfo -t
Man kann sich nun über winbind die Benutzer und Gruppen innerhalb der Domäne anzeigen lassen.
wbinfo -u wbinfo -g
Nun prüfen wir ob auch nsswitch die AD Benutzer und Gruppen kennt. Es sollten die Benutzer und Gruppen des lokalen System UND des AD angezeigt werden. Wenn das nicht funktioniert in der /etc/nsswitch.conf auf files ändern (siehe oben).
getent passwd getent group
Wir richten 3 Sahres ein.
Verzeichnisse anlegen
mkdir -p /sambashares/{daten,zwischenspeicher,chef} chmod -R 0770 /sambashares/ chgrp -R "Domain Users" /sambashares/
Nun konfigurieren wir Samba
# /etc/samba/smb.conf [Buchhaltung] comment = Buchhaltung path = /sambashares/buchhaltung valid users = @DOMAIN\buchhaltung, @DOMAIN\vorstand force group = buchhaltung writable = yes read only = no force create mode = 0660 create mask = 0777 directory mask = 0777 force directory mode = 0770 access based share enum = yes hide unreadable = yes [zwischenspeicher] comment = Daily Emptied Dropbox path = /sambashares/zwischenspeicher valid users = "@DOMAIN\Domain Users" force group = "domain users" writable = yes read only = no force create mode = 0660 create mask = 0777 directory mask = 0777 force directory mode = 0770 access based share enum = yes hide unreadable = yes [Chef] comment = CEO Only path = /sambashares/chef valid users = EXAMPLE\chef force group = "domain users" writable = yes read only = no force create mode = 0660 create mask = 0777 directory mask = 0777 force directory mode = 0770 access based share enum = yes hide unreadable = yes
Zu beachten ist folgendes:
Samba unterstützt auch die Rechtevergabe für Benutzer und Gruppen innerhalb eines Shares über Windows ACL’s oder POSIC ACL’s. Mehr dazu hier.
Danach Samba Dienst neu starten
/etc/init.d/smbd restart
Diese Anleitung basiert auf dem englischen Tutorial von Remy van Elst und wurde an ein paar Stellen korrigiert. Getestet mit Debian 9.
Die permanente Konfiguration erfolgt bei Debian Derivaten traditionell über die Datei /etc/network/Interfaces
. Über das Kommando ifconfig
, bzw. neuerdings ip a
werden die Netzwerkschnittstellen ausgelesen. Zu diesen gibt es analog Einträge in der Datei /etc/network/Interfaces
. Ich nenne das Interface mal eth0, was die frühere Bezeichnung für das erste Ethernet Interface war. Inzwischen vergeben die Systeme andere, oft zufällige, Namen.
Generelle Konfigurationsparameter
allow-hotplug eth0 (bei USB-Netzwerkkarten oder PCMCIA)
auto eth0 (bei fest eingebauten Karten, startet das Interface beim Booten)
auto eth0 iface eth0 inet static address 10.5.5.97/16 gateway 10.5.5.1 dns-nameservers 10.5.5.11 10.5.5.12 dns-search domain.net
iface dhcp eth0 dhcp
Auf Desktop-Systemen findet man oft den Network Manager vorinstalliert, der Netzwerkverbindungen verwalten kann und mit dem man zwischen verschiedenen Netzwerken umschalten kann. Z.B. LAN, WLAN, Bluetooth und Weitere.
Man kann die Schnittstelle auch in der Shell über den Befehl ifconfig
konfigurieren. Eine typische Konfiguration sähe dan so aus:
ifconfig eth0 10.128.0.1 netmask 255.255.0.0 up
Damit erhält die Schnittstelle eth0 die IP 10.128.0.1. Die DNS Server trägt man in der Datei /etc/resolv.conf
ein. Das Routing setzt man mit dem Befehl route
.
Achtung: Der Befehl ifconfig
ist in neueren Distributionen nicht mehr verfügbar. Siehe dazu hier.
Die Routen bestimmt man mit dem Befehl route
.
Typische Routingtabelle auf einem Linux System.
root@nb:~# route -n Kernel-IP-Routentabelle Ziel Router Genmask Flags Metric Ref Use Iface 0.0.0.0 10.128.0.68 0.0.0.0 UG 600 0 0 wlan0 10.128.0.0 0.0.0.0 255.255.0.0 U 600 0 0 wlan0
Die erste Zeile gibt die Default Route zum Router an. Also die Route zum Internet. Bei mehreren Zielen ins selbe Netzwerk wird über die Metric entschieden, welche Route benutzt wird. Die kleinere Metric gewinnt.
Di ezweite Zeile gibt die Route ins internet Netz an.
taskkill /F /T /IM winword.exe /FI "USERNAME eq benutzername"
In PowerShell wird zwischen Modulen und Snapins unterschieden. So sind die Funktionen zum Verwalten des Active Directorys z.B. in einem Modul untergebracht. Die Verwaltung von Exchange jedoch wird über ein Snapin durchgeführt.
Die Datei enthält 2 Funtionen, die beim Aufruf in den Kontext der PowerShell geladen werden. Sie ist auch ein gutes Beispiel für das dynamische Erstellen von powerShell Objekten.
Aufruf nach Ausführung der Datei
Alle Verzeicnisse und Unterverzeichnisse, ohne die enthaltenen Dateien auflisten
Check-Dir "c:\pfad\"
Alle Verzeicnisse und Unterverzeichnisse, inkl. enthaltener Dateien auflisten
Check-Dir-with-files "c:\pfad\"
In dem Verzeichnis, aus dem die Funktion aufgerufen wurde, wird die Augabedatei Dir2CSV.csv abgelegt.
Page 12 of 23
© 2016 kinc.de