CentOS in UCS integrieren

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.

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

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.

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.

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?

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

[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?

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.

@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

Mastodon