CentOS in UCS integrieren

german

#1

Hallo,

ich habe im Handbuch den Abschnitt über die Anbindugn von anderen Linux/Unix(en) an das UCS gelesen. Interessant wäre hier auch die Verwendung der UCS Registry zur Einrichtung einer zentralen Konfiguration der verschiedenen Konfigurationsdateien.

Diese Schritte sind gemacht worden: docs.univention.de/domain-3.2.html#ext-dom-unix
Ich möchte nichts grafisch administrieren können. (Ausser dhcp/dns und registry Einträge natürlich)

Beispiel: zentrales Abschalten von IPv6

[code]/etc/sysctl.conf
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6=1

Kernel sysctl configuration file for Red Hat Linux

For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and

sysctl.conf(5) for more details.

Controls IP packet forwarding

net.ipv4.ip_forward = 0

Controls source route verification

net.ipv4.conf.default.rp_filter = 1

Do not accept source routing

net.ipv4.conf.default.accept_source_route = 0

Controls the System Request debugging functionality of the kernel

kernel.sysrq = 0

Controls whether core dumps will append the PID to the core filename.

Useful for debugging multi-threaded applications.

kernel.core_uses_pid = 1

Controls the use of TCP syncookies

net.ipv4.tcp_syncookies = 1

Controls the default maxmimum size of a mesage queue

kernel.msgmnb = 65536

Controls the maximum size of a message, in bytes

kernel.msgmax = 65536

Controls the maximum shared segment size, in bytes

kernel.shmmax = 68719476736

Controls the maximum number of shared memory segments, in pages

kernel.shmall = 4294967296

IPv6 ausmachen

net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6=1

[/code]

Wenn ich die Datei sysctl.conf unter ucs-master:/etc/univention/templates/files/etc ablege müsste das doch genügen.

Wie ist da die genaue Funktionsweise von ucr? Theoretisch könnte doch

ucr commit /etc/sysctl.conf oder /etc/univention/templates/files/etc/sysctl.conf zu einem Schreiben der Datei führen.

Welche Konfigurationsvoraussetzung brauche ich, um vom CentOS über ucr den UCS-Master zu erreichen, wenn die externe Anbindung inkl. LDAP gemacht ist?

Wie gesagt - Mir geht es nur darum die Standard-Konfiguration der Systeme auszurollen, die immer ziemlich ähnlich sind. Das würde ich gerne in die Registry eintragen und dann über ein kleines Skript auf dem Client ausrollen.


#2

Hallo,

habe eine Portierungsversuch auf CentOS 6.7 unternommen. Ziel ist das oben Geschriebene zu erreichen!

  1. CentOS 6.7 installieren

  2. Python 2.7.3 installieren

[code]yum groupinstall “Development tools”
#oder
yum groupinstall “Entwicklungs-Tools”
#je nach Sprache (nachschauen mit “yum grouplist”)

yum install zlib-devel
yum install bzip2-devel
yum install openssl-devel
yum install ncurses-devel
yum install sqlite-devel
yum install xz

cd /usr/local/src
wget --no-check-certificate https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.xz
tar xf Python-2.7.3.tar.xz
cd Python-2.7.3
./configure --prefix=/usr/local
make && make altinstall

Jetzt befindet sich unter /usr/local/bin eine kompilierte Python-Version (2.7.3=Version von UCS 4.1)

mv /usr/bin/python /usr/bin/python2.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
ln -s /usr/local/bin/python2.7 /usr/bin/python2.7

# ACHTUNG! Jetzt muss yum gefixt werden, da dieses auf python2.6 aufbaut!

pip und eazy_install in python einrichten

cd /usr/local
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
/usr/local/bin/python2.7 ez_setup.py
/usr/local/bin/easy_install-2.7 pip

ln -s /usr/local/bin/pip /usr/bin/pip
ln -s /usr/local/bin/easy_install /usr/bin/easy_install
[/code]

  1. UCR und dazugehörige Libraries transportieren

#jetzt die Datei /usr/sbin/univention-config-registry auf das CentOS System transportieren.

ln -s /usr/sbin/univention-config-registry /usr/sbin/ucr

#Jetzt die Python-Libs nachziehen

cd /usr/share
tar cfv pyshared.tar pyshared/*

#Jetzt das pyshared.tar auf das CentOS übertragen und im Verzeichnis /usr/share auspacken

cd /usr/share
tar xfv pyshared.tar 

Jetzt lässt sich ucr ohne Fehler aufrufen.

ucr

univention-config-registry: base configuration for UCS
copyright (c) 2001-2015 Univention GmbH, Germany

Syntax:
  univention-config-registry [options] <action> [options] [parameters]

Options:

  -h | --help | -?:
    print this usage message and exit program

  --version | -v:
    print version information and exit program

  --shell (valid actions: dump, search):
    convert key/value pair into shell compatible format, e.g.
    `version/version: 1.0` => `version_version="1.0"`

  --keys-only (valid actions: dump, search):
    print only the keys

Actions:
  set [--force|--schedule|--ldap-policy] <key>=<value> [... <key>=<value>]:
    set one or more keys to specified values; if a key is non-existent
    in the configuration registry it will be created

  get <key>:
    retrieve the value of the specified key from the configuration
    database

  unset [--force|--schedule|--ldap-policy] <key> [... <key>]:
    remove one or more keys (and its associated values) from
    configuration database

  dump:
    display all key/value pairs which are stored in the
    configuration database

  search [--key|--value|--all] [--category <category>] [--brief|-verbose] \
          [--non-empty] [... <regex>]:
    displays all key/value pairs and their descriptions that match at
    least one of the given regular expressions
    --key: only search the keys (default)
    --value: only search the values
    --all: search keys, values and descriptions
    --category: limit search to variables of <category>
    --brief: don't print descriptions (default controlled via ucr/output/brief)
    --verbose: also print category for each variable
    --non-empty: only search in non-empty variables
    no <regex> given: display all variables

  info <key> [... <key>]:
    display verbose information for the specified variable(s)

  shell [key]:
    convert key/value pair into shell compatible format, e.g.
    `version/version: 1.0` => `version_version="1.0"`
    (deprecated: use --shell dump instead)

  commit [file1 ...]:
    rebuild configuration file from univention template; if
    no file is specified ALL configuration files are rebuilt

  filter [file]:
    evaluate a template file, expects python inline code in UTF-8 or US-ASCII

Description:
  univention-config-registry is a tool to handle the basic configuration for
  Univention Corporate Server (UCS)

uname -a

Linux gtw02.domain.de 2.6.32-573.8.1.el6.x86_64 #1 SMP Tue Nov 10 18:01:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/centos-release

CentOS release 6.7 (Final)

python --version

Python 2.7.3

Jetzt noch yum reparieren (Bitte hier sehr genau arbeiten, sonst geht yum nicht mehr!)

which yum

/usr/bin/yum

vi /usr/bin/yum

# die erste Zeile von 
#!/usr/bin/python
ändern in 
#!/usr/bin/python2.6

yum testen

yum grouplist

muss am Schluss sowas ergeben:

[.....]
   Unterstützung für Persisch [fa]
   Unterstützung für Philipinisch [fil]
   Unterstützung für Polnisch [pl]
   Unterstützung für Portugiesisch [pt]
   Unterstützung für Portugiesisch (Brasilien) [pt_BR]
   Unterstützung für Punjabi [pa]
   Unterstützung für Rumänisch [ro]
   Unterstützung für Russisch [ru]
   Unterstützung für Sanskrit [sa]
   Unterstützung für Sardinisch [sc]
   Unterstützung für Schwedisch [sv]
   Unterstützung für Serbisch [sr]
   Unterstützung für Sindhi [sd]
   Unterstützung für Sinhala [si]
   Unterstützung für Slowakisch [sk]
   Unterstützung für Slowenisch [sl]
   Unterstützung für Somalisch [so]
   Unterstützung für Spanisch [es]
   Unterstützung für Spanisch (Katalanien) [ca]
   Unterstützung für Suaheli [sw]
   Unterstützung für Swati [ss]
   Unterstützung für Süd-Ndebele [nr]
   Unterstützung für Süd-Sotho [st]
   Unterstützung für Tadschikisch [tg]
   Unterstützung für Tagalog [tl]
   Unterstützung für Tamil [ta]
   Unterstützung für Telugu [te]
   Unterstützung für Tetum [tet]
   Unterstützung für Thai [th]
   Unterstützung für Tibetisch [bo]
   Unterstützung für Tschechisch [cs]
   Unterstützung für Tsonga [ts]
   Unterstützung für Tswana [tn]
   Unterstützung für Turkmenisch [tk]
   Unterstützung für Türkisch [tr]
   Unterstützung für Ukrainisch [uk]
   Unterstützung für Ungarisch [hu]
   Unterstützung für Urdu [ur]
   Unterstützung für Usbekisch [uz]
   Unterstützung für Venda [ve]
   Unterstützung für Vietnamesisch [vi]
   Unterstützung für Walisisch [cy]
   Unterstützung für Wallonisch [wa]
   Unterstützung für Xhosa [xh]
   Unterstützung für Zulu (Südafrika) [zu]
   Unterstützung für Äthiopisch [am]

Jetzt kommt das hier dran:
docs.software-univention.de/doma … t-dom-unix
und zwar Abschnitt 2.1 bis zum Anschnitt 2.5


#3

vi /etc/resolve.conf

search domain.de
nameserver ip.from.master.ucs

yum install ntp
vi /etc/ntp.conf

server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

ändern in:

server ip.from.master.ucs
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

ntpd dauerhaft anschalten

chkconfig ntpd on

Jetzt openLDAP einrichten: (Handbuch Abschnitt 2.4)

yum install openldap-clients openldap

Passendes nss-pam modul installieren: (das zieht pam-ldap und nscd nach)

yum install nss-pam-ldapd
chkconfig nscd on
serviuce nscd start

vi /etc/openldap/ldap.conf (das Ergebnis des Befehls eintragen: “ucr get ldap/base”)

BASE dc=domain,dc=de
#URI     ldap://ucs-master.domain.de:7389 ldaps://ucs-master.domain.de:7636

Ich glaube den URI-Eintrag braucht man nicht, wenn der DNS-Eintrag

_ldap._tcp.domain.de auf den Master-UCS Server zeigt.

Hier wäre interessant, ob es auch einen LDAPS-Eintrag gibt. Also so etwa:
_ldaps._tcp.domain.de der auf den Port 7636 oder 636 des UCS-Master zeigen würde?

#Der nächste Schritt steht nicht im Handbuch, aber wie könnte eine Authentifizierung über LDAP funktionieren
#ohne den nachfolgenden Eintrag.

vi /etc/nsswitch.conf ändern von

passwd:     files 
shadow:     files 
group:      files

in

passwd:     files ldap
shadow:     files ldap
group:      files ldap

Leider zeigt bei mir

getent passwd nur die lokalen User an. Auf dem Master UCS klappt das.

ich sehe mit

netstat -nat auch gar keine Netzwerkverbindung, bei der der Client versuchen könnte auf den Server zugreifen. Er macht einfach nix.

Kann jemand beim LDAP debuggen weiterhelfen? Es ist kein Firewall-Problem - der TCP-Connect kommt zustande.


#4

Es gibt noch einen weiteren Service unter CentOS (nslcd)

wenn man den unter /etc/nslcd.conf einrichtet: (base und uri)

und den Aufruf “getent passwd” dann dauert es eine Weile bis die Shell wieder kommt.

Ich sehe aber trotzdem keine Netzwerkverbindungen.

Auf dem UCS-Master funktioniert getent passwd.


#5

Fehlermeldung in /var/log/messages

Dec 16 18:08:33 gtw02 nslcd[3750]: [8b4567] ldap_initialize(ladp://ucs-a.domain.de:7389/) failed: Bad parameter to an ldap routine
Dec 16 18:08:33 gtw02 nslcd[3750]: [8b4567] no available LDAP server found

Was will er mir hiermit sagen?


#6

Muss ein bestimmter user für den LDAP-Bind benutzt werden?


#7

[quote=“bastian.epting”]Fehlermeldung in /var/log/messages

Dec 16 18:08:33 gtw02 nslcd[3750]: [8b4567] ldap_initialize(ladp://ucs-a.domain.de:7389/) failed: Bad parameter to an ldap routine
Dec 16 18:08:33 gtw02 nslcd[3750]: [8b4567] no available LDAP server found

Was will er mir hiermit sagen?[/quote]

Haben Sie schon den Buchstabendreher »ladp://…« → »ldap://…« korrigiert?


#8

Noch zwei weitere Punkte:

yum install nss-pam-ldapd chkconfig nscd on serviuce nscd start

Der nslcd ist der Dämon, der die LDAP-Abfrage erledigt. Der nscd (ohne das »l«) ist hingegen nur ein Caching-Dämon.

Sprich: nslcd benötigen Sie unbedingt, der nscd ist rein optional.

Schlimmer: der nscd cachet auch negative Ergebnisse. Solange Sie mit »getent passwd« keine LDAP-User sehen, sollten Sie unbedingt den nscd ausschalten und ihn erst dann wieder einschalten, wenn die LDAP-Abfrage von Benutzern wirklich funktioniert. Ansonsten handeln Sie sich mehr potenzielle Problemquellen ein als unbedingt nötig.

Weiterhin:

[quote]Wie ist da die genaue Funktionsweise von ucr? Theoretisch könnte doch

ucr commit /etc/sysctl.conf oder /etc/univention/templates/files/etc/sysctl.conf zu einem Schreiben der Datei führen.[/quote]

Nein. Es genügt nicht, einfach nur ein Template in »/etc/univention/templates/files/…« abzulegen. Sie müssen das Template auch registrieren, damit ucr weiß, welche Dateien es aus dem Template erzeugen soll. Das geschieht über die Dateien in »/etc/univention/templates/info/…«. Nehmen Sie sich am Besten welche aus dem UCS-System als Beispiel.

Diese Registrierungsdateien sagen mehrere Dinge:

[ul][li]Welche Zieldatei wird aus welchen Templates erzeugt?[/li]
[li]Handelt es sich um ein einzelnes Template oder um multiple Sub-Templates im Verzeichnis »name.d«?[/li]
[li]Soll die Datei automatisch aktualisiert werden, wenn sich bestimmte UCR-Variablen ändern? Falls ja, welche Variablen triggern dies?[/li][/ul]

Zu guter letzt: yum zu ändern ist überhaupt keine gute Idee. Das geht beim nächsten yum-Update kaputt, und dann vermutlich katastrophal, wenn yum inmitten eines Upgrades plötzlich nicht mehr funktioniert.

Das komplette CentOS verlässt sich ja darauf, dass »/usr/bin/python« eine bestimmte Version ist. Wenn Sie daran rütteln, handeln Sie sich jede Menge Probleme ein.


#9

@Templates
vielen Dank für die Erläuterungen im Bereich Templates - ich werde das gleich einmal an einem konkreten Beispiel versuchen nachzuvollziehen.

@yum
ja - Sie haben ja recht - yum zu ändern ist keine gute Idee. Ich wollte es erste einmal zum Laufen bringen. Mir erschien es aufwendiger alle python scripte von Univention zu ändern, als das eine YUM-Script.

Aber grundsätzlich haben Sie natürlich recht - da muss eine andere Lösung gefunden werden. Wenn die Integration funktioniert hat, dann setze ich mich an dieses Problem.

@Tippfehler ladp
Nein - hab den Tippfehler gefunden - vielen Dank:
/etc/nslcd.conf

Vielen Dank für den Hinweis - da hätte ich ja Tage gesucht für - vor allem, weil mir die Funktionsweise von nslcd nicht bekannt war.

So - hab ich korrigiert - geht noch nicht - warscheinlich, weil ich den sssd noch nicht konfiguriert habe.

Danke für die Hilfe