Outils pour utilisateurs

Outils du site


blog

SVN synchronisation groupes LDAP

Voir

sudo apt-get install python-ldap
git clone https://github.com/whitlockjc/sync-ldap-groups-to-svn-authz
cd sync-ldap-groups-to-svn-authz
./sync_ldap_groups_to_svn_authz.py -d admin -p 'P@ssw0rd' -l ldap://192.168.2.53:389 -b "CN=groupe 1,CN=Users,dc=acme,dc=local" -i "sAMAccountName" # -z /etc/apache2/svn-authz

/etc/apache2/svn-authz

[groups]
goupe1 = jean, user1
 
[DEPOT1:/]
@groupe1 = r
 
[DEPOT1:/TEST]
@groupe1 = rw

/etc/apache2/sites-available/svn.conf

listen *:3695
<VirtualHost *:3695>
        ServerAdmin postmaster@acme.com
#       DocumentRoot /var/www/svn/DEPOT1
        ServerName  srv-svn1
#       ServeurAlias srv-svn1
 
        <Location "/">
                DAV svn
                #SVNPath /var/www/svn/DEPOT1
                SVNParentPath /var/www/svn
                SVNListParentPath on
                #AuthzLDAPAuthoritative off # Obsolete
                AuthBasicProvider ldap
                AuthType Basic
                AuthName "Depots"
                AuthLDAPURL "ldap://192.168.2.53:389/DC=acme,DC=local?sAMAccountName?sub?(objectClass=*)"
                AuthLDAPBindDN "user@acme.local"
                AuthLDAPBindPassword P@ssw0rd
                AuthzSVNAccessFile /etc/apache2/svn-authz
 
                require ldap-group CN="groupe 1",CN=Users,dc=acme,dc=local
                require ldap-user user1
                <LimitExcept GET PROPFIND OPTIONS REPORT>
                   require ldap-group CN="groupe 1",CN=Users,dc=acme,dc=local
                   require ldap-user user1
                </LimitExcept>
 
        </Location>
        ErrorLog ${APACHE_LOG_DIR}/svn_error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION
</VirtualHost>
2025/03/24 15:06

SVN over HTTP avec USVN - interface web d'administration de Subversion via Apache

Voir :

Voir aussi:

USVN (pour User-Friendly SVN) est une interface web permettant de gérer les droits sur les dépôts SVN. Cette application est capable d'utiliser une authentification LDAP.

apt-get install subversion apache2 libapache2-mod-svn libapache2-mod-php
apt-get install php-net-ldap2 php-net-ldap3 php-ldap # Vraiment nécessaire ?
apt-get install php7.0-mbstring php7.0-sqlite3 php7.0-xml
a2enmod authz_svn
a2enmod rewrite

/etc/apache2/sites-available/usvn.conf

<Directory "/var/www/usvn/public">
    Options +SymLinksIfOwnerMatch
    AllowOverride All
    ## For Apache HTTP 2.2
    #Order allow,deny
    #Allow from all
    ## For Apache HTTP 2.4
    Require all granted
</Directory>
 
<Location /usvn/svn/>
    ErrorDocument 404 default
    DAV svn
    SVNParentPath /var/www/usvn/files/svn
    SVNListParentPath off
    AuthType Basic
    AuthName "USVN"
    AuthUserFile /var/www/usvn/files/htpasswd
    Require valid-user
    AuthzSVNAccessFile /var/www/usvn/files/authz
</Location>

Notez que nous utilisons bien AuthUserFile alors que nous voulons une authentification LDAP. USVN va écrire automatiquement le fichier htpasswd

a2ensite usvn.conf

En PHP 7 la fonction split n'existe plus, elle a été remplacée par explode

$ find . -iname "*.php" -not -wholename "./files/*" -exec grep -l '[^a-zA-Z0-9_\-]split(' {} \;
./app/controllers/BrowserajaxController.php
sed -i -e 's/split(/explode(/g' ./app/controllers/BrowserajaxController.php

/var/www/usvn/config/config.ini

[general]
url.base = "/usvn"
translation.locale = "fr_FR"
timezone = "Europe/Paris"
system.locale = "C.UTF-8"
template.name = "usvn"
site.title = "USVN"
site.ico = "medias/usvn/images/logo_small.tiff"
site.logo = "medias/usvn/images/logo_trans.png"
subversion.path = "/var/www/usvn/files/"
subversion.passwd = "/var/www/usvn/files/htpasswd"
subversion.authz = "/var/www/usvn/files/authz"
subversion.url = "http://srvsvn.local/usvn/svn/"
database.adapterName = "PDO_SQLITE"
database.prefix = "usvn_"
database.options.dbname = "/var/www/usvn/files/usvn.db"
update.checkforupdate = "0"
update.lastcheckforupdate = "0"
version = "1.0.7"
alwaysUseDatabaseForLogin = "admin"
authAdapterMethod = "ldap"
ldap.options.host = "192.168.2.153"
ldap.options.port = "389"
ldap.options.username = "user"
ldap.options.password = "P@ssw0rd"
ldap.options.useStartTls = "0"
ldap.options.useSsl = "0"
ldap.options.bindRequiresDn = "0"
ldap.options.accountCanonicalForm = "4"
ldap.options.allowEmptyPassword = "0"
ldap.options.optReferrals = "0"
ldap.options.accountDomainNameShort = "ACME"
ldap.options.baseDn = "dc=acme,dc=local"
ldap.options.accountDomainName = "acme.local"
ldap.options.accountFilterFormat = "(&(sAMAccountName=%s)(objectClass=*))"
ldap.createGroupForUserInDB = "1"
ldap.createUserInDBOnLogin = "1"

Pb

Il y a un bug dans l'appli impactant la conf LDAP. Après avoir rempli un champ, il est impossible de le reseter par l'interface web. Il faut supprimer la ligne à la main le fichier config.ini

2025/03/24 15:06

Svn erreur svn cannot negotiate authentication mechanism

Erreur

$ svn checkout svn://hack.me:3600/Projets/Web/foo/trunk
svn: E210007: Unable to connect to a repository at URL 'svn://hack.me:3600/Projets/Web/foo/trunk'
svn: E210007: Impossible de négocier de mécanisme d'authentification

ou

$ svn info svn://hack.me:3600/Projets/Web/foo/trunk
svn: E170013: Unable to connect to a repository at URL 'svn://hack.me:3600/Projets/Web/foo/trunk'
svn: E210007: Cannot negotiate authentication mechanism

Solution

Sous Debian

sudo apt-get install libsasl2-modules

Sous RedHat7 / CentOS7

sudo yum install cyrus-sasl-md5
2025/03/24 15:06

Support Ubuntu ESM Extended Security Maintenance

Voir :

sudo ua status
# dpkg -S /usr/bin/ua
ubuntu-advantage-tools: /usr/bin/ua

FIXME

2025/03/24 15:06

Supervision ajout d'un hôte automatiquement dans Zabbix

Zabbix Auto Discovery (for active and for passive check)

Voir :

Le port TCP 10051 du serveur Zabbix doit-être joignable pour que les machines puissent si faire connaître de lui

Commenter la ligne Hostname=Zabbix server (pour que HostnameItem puisse s’appliquer)

/etc/zabbix/zabbix_agentd.conf

#Hostname=
HostnameItem=system.hostname
ServerActive=192.168.1.100
HostMetadataItem=system.uname

Redémarrer l'agent

service zabbix-agent restart

On jette un œil dans les logs

# tail -f /var/log/zabbix-agent/zabbix_agentd.log   
Configuration / Actions / Event source='Auto registration' 
Create action

'Conditions' tab : 
 Host metadata like Linux

'Operations' tab :
 Add host
 Add to host groups: Virtual machines
 Link to templates: Template OS Linux

Via l'Api

Voir aussi :

Exemple de suppression

pip3 install --user zabbix-client
import zabbix_client
 
s=zabbix_client.ZabbixServerProxy('https://acme.fr/zabbix')
s.apiinfo.version()
s.user.login(user='Admin', password='zabbix')
s.host.get(output=['hostid', 'host'])
 
# Ne plus superviser
s.host.update({'hostid': '10124', 'status': '1'})
# Superviser de nouveau
s.host.update({'hostid': '10124', 'status': '0'})
 
s.host.delete(10119)
2025/03/24 15:06
blog.txt · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki