Nach CentOS6 upgrade: Windows clients lassen sich nicht mehr zur Domäne hinzufügen

Nach dem upgrade von CentOS/RHEL 5 auf CentOS/RHEL 6 stellt man fest, dass sich Windows clients nicht mehr an der SAMBA-Domäne anmelden können.

Es erscheint die folgende Meldung:

Der folgende Fehler ist beim Abfragen von DNS über den Ressourceneintrag der Dienstidentifizierung (SRV) aufgetreten, der zur Suche eines Domänencontrollers für die Domäne "my.domain.tld" verwendet wird:
 
Fehler: "Der DNS-Name ist nicht vorhanden."
(Fehlercode 0x0000232B RCODE_NAME_ERROR)
 
Die Abfrage war für den SRV-Eintrag für _ldap._tcp.dc._msdcs.MY.DOMAIN.TLD
 
Die häufigsten Ursachen dieses Fehlers sind:
 
- Der DNS-SRV-Eintrag wurde nicht in DNS registriert.
 
- Mindestens eine der folgenden Zonen enthalten keine Delegierung zu dieser untergeordneten Zone:
 
my.domain.tld
domain.tld
tld
. (die Stammzone)
 
Klicken Sie auf "Hilfe", um weitere Informationen über die Fehlerbehebung zu erhalten.

Das Problem liegt daran, dass bei CentOS 5 der smb und der nmb daemon zusammen im startscript: /etc/init.d/smb gestartet wurden.
Bei CentOS 6 hingegen, werden diese über die zwei getrennten Startscript: /etc/init.d/smb und /etc/init.d/nmb gestartet. Vergisst man nun, den nmb daemon zu aktivieren, schlägt das hinzufügen zur domäne fehl.

Das problem wird durch starten des nmb daemons gelöst:

chkconfig nmb on
/etc/init.d/nmb start

Diagnostizieren kann man das Problem mit den folgendes commands:

smbclient -L <IP> -U%
Domain=[MY.DOMAIN.TLD] OS=[Unix] Server=[Samba 3.5.10-115.el6_2]
 
        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Driver Download Area
        share           Disk      Temporary file space
        media           Disk      Video, Bilder und Sound
        IPC$            IPC       IPC Service (domain-server)
        myprinter      Printer   HP Color LaserJet
Domain=[MY.DOMAIN.TLD] OS=[Unix] Server=[Samba 3.5.10-115.el6_2]
 
        Server               Comment
        ---------            -------
        DOMAIN-SERVER        domain-server
        MYWORKSTATION
 
        Workgroup            Master
        ---------            -------
        MY.DOMAIN.TLD        DOMAIN-SERVER

(Wenn der PDC nicht funktioniert sind die unteren beiden Abschnitte "Server" und "Workgroup" leer.

nmblookup -A <PDC-IP>
Looking up status of x.x.x.x
        DOMAIN-SERVER       <00> -         B <ACTIVE>
        DOMAIN-SERVER       <03> -         B <ACTIVE>
        DOMAIN-SERVER       <20> -         B <ACTIVE>
        ..<b>MSBROWSE</b>. <01> - <GROUP> B <ACTIVE>
        MY.DOMAIN.TLD   <1d> -         B <ACTIVE>
        MY.DOMAIN.TLD   <1b> -         B <ACTIVE>
        MY.DOMAIN.TLD   <1c> -         B <ACTIVE>
        MY.DOMAIN.TLD   <1e> - <GROUP> B <ACTIVE>
        MY.DOMAIN.TLD   <00> - <GROUP> B <ACTIVE>
 
        MAC Address = 00-00-00-00-00-00

Mehrere Linux Konsolenfenster mit screen

Auch in einem Linux Terminal kann man mehrere "Fenster" haben – Und das praktische dabei ist: Diese laufen automatisch weiter, wenn man sich aus der aktuellen SSH Session ausloggt! (:wink:)

Möglich wird dies mit dem Programm "screen", einem sogenannten "Terminal-multiplexer".

[stextbox id=“note“ caption=“Hinweis“]screen gilt mittlerweile als veraltet und ausserdem ist die Entwicklung tot.
Als bessere alternative wird tmux angesehen, welches jedoch sehr ähnlich funktioniert und die Bedienung von dieser Seite abgeleitet werden kann.[/stextbox]

Zum Benutzen gibt man in der Linux Session einfach "screen" ein.

Hier kann man dann ganz normal Programme laufen lassen. Will man sich nun aus dieser screen-session ausloggen, drückt man CTRL+A und gibt dann: "d" (für dettach) ein. Und schon ist man wieder in der normalen Linux shell, wo man sich nun aus- und nach dem einloggen das laufende Programm einfach mit "screen -r" (re-attach) zurückholen kann.

Die Bedienung von screen erfolgt im allgemeinen immer mittels: [[CTRL]+a, gefolgt von einem Buchstaben als Befehl; also ähnlich wie ESC beim vi.

Die folgenden Befehle sind in einer screen session sehr nützlich:

  • [[CTRL]+a c

[c]reate, erzeugt ein neues screen Fenster.

  • [[CTRL]+a n

[n]ext, springt zum nächsten screen Fenster.

  • [[CTRL]+a p

[p]revious, springt zum vorherigen screen Fenster

  • [[CTRL]+a #

Das # steht für eine Nummer, mit der man direkt zum entsprechenden Terminal springen kann. Das erste Fenster startet ab 0, welches also mittels CTRL+a 0 erreicht werden kann.

  • [[CTRL]+a A

Damit kann man dem Fesnter einen Namen geben

  • [[CTRL]+a "

Eine Übersicht aller screen Fenster anzeigen

  • [[CTRL]+a K

[K]ill, schliesst das screen Fenster und beendet die darin laufenden Programme.

  • [[CTRL]+a S

[S]plit, erzeugt einen horizontalen splitscreen (im neuen screen muss noch mit [CTRL]+a c ein neues Fenster erzeugt werden)

  • [[CTRL]+a |

Wie oben, aber mit einem horizontalem splitscreen

  • [[CTRL]+a [[TAB]

Wechselt zwischen den splitscreens

  • [[CTRL]+a X

Schliesst den aktuellen splitscreen

  • [[CTRL]+a Q

Schliesst alle splitscreens

Quellen

linux screen terminal
Screen auf wiki.archlinux.de

Mit vi ganze Textblöcke bearbeiten

Immer wieder steht man vor dem Problem mit dem VI schnell mal einen ganzen Codeblock auskommentieren zu müssen. Mit dem Blockmodus von VI geht das auch ganz einfach:

In die Anfangszeile wechseln und CTRL+V drücken, dies aktiviert den Blockmodus (im Status erscheint: – VISUAL BLOCK –)

Jetzt den Cursor bis zur gewünschten Zeile nach unten (Cursortaste oder j) verschieben, der Block dazwischen wird dadurch ausgewählt

Mit shift+i (großes I) in den Eingabemodus wechseln und das gewünschte Kommentarzeichen (#, // ) eingeben.

Mit ESC zurück in den Befehlsmodus, VI hat jetzt an den Anfang jeder Zeile das gewünschte Zeichen eingefügt.

Sollen die Zeilen wieder einkommentiert werden muss der Block zuerst wie vorher wieder markiert werden. Bei mehr als einem Zeichen werden die weiteren mit der Cursortaste oder l markiert. Zum löschen x drücken.

Dies funktioniert übrigens auch mit Einrückungen.

Output loopen

Möchte man in einem shell script mit einer Ausgabe irgendwas machen, geht das ganz leicht mittels:

for line in `ls`; do echo "this is line: $line"; done

In diesem Beipsiel wird jede Zeile von "ls" wieder ausgegeben.
Selbiges könnte man zum Beispiel cat mit dem Inhalt einer Datei machen:

for line in `cat datei.txt`; do echo "this is line: $line"; done

Man kann auch ein kommando ausführen und dies erst in eien Variable schreiben.
Das folgende Beispiel findet alle ausführbaren .conf Dateien im Verzeichis /etc/myapp/ und führt diese mit dem entpsrechenden Benutzer der die Datei besitzt aus:

init_files=`find /etc/myapp/<em> -maxdepth 1 -type f -name </em>.conf -perm -u+rx`
for init_files in $init_files
  do
    script_owner=`stat -c '%U' $init_script`
    echo -e "nStarting script for user: $script_owner"
    sudo -u $script_owner -i $init_script $1;
    RETVAL=$(($RETVAL+$?))
  done

Umleitung auf www Domain

Hat man eine Webseite, sollte diese immer mit und ohne, dass „www“ erreichbar sein; d.h. http://example.com/ oder http://www.example.com.

Man sollte sich aber in einem solchen Fall für eine Schreibweise entscheiden und die andere auf diese umleiten um keine Probleme mit Cookies zu kriegen und die Suchmaschinen nicht zu verwirren.
Suchmaschinen-technisch ist dies auch schlecht, da die Suchmaschine dann denken, man mache dies extra um mehr hits zu bekommen und die Seite teilweise im ranking sogar herabstufen!

Achtung, benutze nur eine der folgenden Anweisungen in deinem .htaccess file:

Um alle User so umzuleiten, dass die Seite MIT dem „www.“ Präfix läuft, benutze diese Einstellung:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Um alle User so umzuleiten, dass die Seite OHNE dem „www.“ Präfix läuft, benutze diese Einstellung:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

Dies leitet nun alles was NICHT http://www.example.com/ ist nach http://www.example.com/ um. So lässt sich dies auch gut gebrauchen wenn man noch weitere domains hat, die auf dieses Verzeichnis zeigen und man alle zur gleichen Haut-Domain weiter leiten möchte. (:wink:)

[stextbox id=“tip“ caption=“Tip: Umleitung direkt in der Server-Konfiguration“]Manche CMS, wie z.B. Drupal ersetzen bei einem update meist die .htaccess Datei mit ihrer Standard-Datei. Dies führt dann dazu, dass man die eigenen Änderungen nach jedem update neu nachtragen muss, was sehr mühsam ist.

Hat man die Möglichkeit die Server-Konfiguration zu ändern, macht man die Umleitung deshalb am besten direkt im VirtualHost File:

  #[...]
 
 
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www. [NC]
    RewriteRule ^ <a href="http://www.%{HTTP_HOST}%{REQUEST_URI}" target="blank" rel="noopener noreferrer">http://www.%{HTTP_HOST}%{REQUEST_URI}</a> [L,R=301]
 
 
  #[...]

Quelle: http://drupal.stackexchange.com/questions/30167/htaccess-www-redirect-in-dev-desktop|drupal.stackexchange.com
[/stextbox]

Drupal: Suchindex lässt sich nicht mehr neu erstellen

Falls es vorkommen sollte, dass bei drupal die Neuerstellung des Suchindexes fehl schlägt und der entsprechende cronjob "search_cron" in einen HTTP 500 error läuft müssen alle Module deaktiviert und dann der Index neu erstellt werden.

Dies geht am besten auf der shell mit den Modulen [http://drupal.org/project/drush|drush] und [http://drupal.org/project/reindex|reindex]:

[mysite.tld@server public_html]$ drush vset site_offline 1
[mysite.tld@server public_html]$ DRUPAL_MODULES=$(drush pm-list --status="enabled" --type="module" --no-core --pipe | tr 'n' ' ')
[mysite.tld@server public_html]$ drush pm-disable $DRUPAL_MODULES
[mysite.tld@server public_html]$ drush cache-clear all
[mysite.tld@server public_html]$ drush pm-enable reindex

Nun wechselt man zur Seite und startet die Neuerstellung des indexes mit dem Modul reindex.

[mysite.tld@server public_html]$ drush pm-enable $DRUPAL_MODULES
[mysite.tld@server public_html]$ drush cache-clear all
[mysite.tld@server public_html]$ drush vset site_offline 0

Nach dieser Aktion kann man den search_cron wieder aktivieren.

Infos: drupal.org: [http://drupal.org/node/1192086|Re-Index crashes with Segmentation fault]

CentOS 5: postfix mit mysql Unterstützung

Am Anfang war der Workaround …

…welcome to the real world, admin! 😉

Leider hat das postfix-Paket im CentOS 5 (Ab CentOS 6 ist das behoben!) Standard Repository die mysql-Unterstützung nicht einkompiliert, welche man oft dringend braucht. Glücklicherweise ist diese im CentOS Plus Repository vorhanden, welches man nur noch einzurichten braucht. ABER VORSICHT: Es muss dann sichergestellt werden, dass postfix niemals mehr vom Base-Repository updatet wird, da ansonsten die mysql-Unterstützung wieder fehlt. Wir werden das hier so Einrichten.

Zuerst mal müssen wir schauen, dass in der Datei "/etc/yum.repos.d/CentOS-Base.repo"

der Eintrag für das CentOSPlus repository vorhanden und aktiviert ist; wenn nicht einfach einfügen, bzw. enabled=1 setzen. Ausserdem darauf schauen, dass unter jedem repository der Eintrag:

exclude=postfix<em>

vorhanden ist, AUSSER bei [centosplus] wo das stehen muss:

includepkgs=postfix</em>

Die Datei: /etc/yum.repos.d/CentOS-Base.repo müsste also etwa so aussehen:

[base]
name=CentOS-$releasever - Base
mirrorlist=<a href="http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os" target="blank">http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os</a>
#baseurl=<a href="http://mirror.centos.org/centos/$releasever/os/$basearch/" target="blank">http://mirror.centos.org/centos/$releasever/os/$basearch/</a>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postfix*
 
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=<a href="http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates" target="blank">http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates</a>
#baseurl=<a href="http://mirror.centos.org/centos/$releasever/updates/$basearch/" target="blank">http://mirror.centos.org/centos/$releasever/updates/$basearch/</a>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postfix*
 
#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=<a href="http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons" target="blank">http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons</a>
#baseurl=<a href="http://mirror.centos.org/centos/$releasever/addons/$basearch/" target="blank">http://mirror.centos.org/centos/$releasever/addons/$basearch/</a>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postfix*
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=<a href="http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras" target="blank">http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras</a>
#baseurl=<a href="http://mirror.centos.org/centos/$releasever/extras/$basearch/" target="blank">http://mirror.centos.org/centos/$releasever/extras/$basearch/</a>
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postfix*
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=<a href="http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus" target="blank">http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus</a>
#baseurl=<a href="http://mirror.centos.org/centos/$releasever/centosplus/$basearch/" target="blank">http://mirror.centos.org/centos/$releasever/centosplus/$basearch/</a>
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
includepkgs=postfix*
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=<a href="http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib" target="blank">http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib</a>
#baseurl=<a href="http://mirror.centos.org/centos/$releasever/contrib/$basearch/" target="blank">http://mirror.centos.org/centos/$releasever/contrib/$basearch/</a>
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
exclude=postfix*

HTML-Floatingbar

Mithilfe von wenigen Zeilen HTML und CSS stylinh ist es möglich so eine „Warnleiste“ zu kreieren, wie sie häufig von den Browsern verwednet wrid.

Dies kann man dann z.B. benutzen um den Besuchen Hinweise sich zu registrieren zu gaben. 🙂

Im ersten Schritt wird hier ein DIV Block angelegt, der dann mit CSS entsprechend formattiert wird:

<div class="floatingbar">
  <a href="/register.php" id="floatingbar"><img src="logo.gif" width="16" height="16" border="0" align="absmiddle">Registriere dich hier, um versteckte Bereiche sehen zu können!</a>
</div><br />
 
<style type="text/css">
.floatingbar a:hover, a:hover#floatingbar
{
  background-color: #45484F;
  color:#ffffff;
}
.floatingbar a, .floatingbar a:link
{
  background-color: #F1EEC8;
  color:black;
  position:fixed;
  padding:5px 10px;
  display:block;
  top:0;
  left:0;z-index:100;
  width:100%;
  border-bottom:2px solid gray;
  font-size:11px;
  font-family:Tahoma;
  margin:0;
  text-decoration:none;
}
</style>

Und das ganze sieht dann so aus:

html-floatingbar-01