Project

General

Profile

Actions

Bug #44517

closed

(SVN) repositories not accessible any more since migration?

Added by Hoffmann Dirk about 1 year ago. Updated about 1 year ago.

Status:
Resolved
Priority:
Urgent
Assigned To:
Start date:
04/08/2021
Due date:
% Done:

0%

Estimated time:
2.00 h

Description

When accessing the associated SVN repositories (of the CTA projects) I get a 404, probably since the migration of Redmine.

Actions #1

Updated by ROUET Jean-René about 1 year ago

  • Status changed from New to In progress

Après investigation, c'est lié à un problème bas niveau avec ssh, ssh ne veut pas que l'on utilise un user non défini dans /etc/passwd.
La forge tourne avec des users non root alloués à la volée par openshift-kubernetes.
Je n'ai pas encore trouvé de moyen pour résoudre ce problème.

Actions #2

Updated by Hoffmann Dirk about 1 year ago

  • Assigned To set to ROUET Jean-René

Après investigation, c'est lié à un problème bas niveau avec ssh, ssh ne veut pas que l'on utilise un user non défini dans /etc/passwd.

Je ne suis pas sûr de comprendre. Donc, le résultat de

getent passwd $(whoami)

exécuté par l'utilisateur client SSH serait vide ?

Je ne savais pas que le noyau permet de créer des processus avec UID inconnu (non déclaré). On parle bien de Linux ?

Pour contourner le problème (si c'est bien cela), je verrais
  • créer un utilisateur sshclient statique dans /etc/passwd proprement
  • sudo -u sshclient ssh dans $SVN_SSH.
Actions #3

Updated by ROUET Jean-René about 1 year ago

merci pour les pistes.

Pour expliquer le problème, l'entrypoint des containers forge démarrés dans openshit/k8s est exécuté avec un utilisateur aléatoire (plus ou moins) qui n'est pas privilégié.
Donc pour faire tourner un container dans notre infra il faut que l'image soit capable de faire cela sans être root ou même un utilisateur fixé comme www-data par exemple.

Le problème de ssh est qu'il plante direct avec l'erreur : "No user exists for uid 1003270000"
Comme tu vois l'uid est non mappé sur un nom et on ne peut pas la connaître à l'avance et le créer dans l'image à la construction, de même qu'à l'exécution vu qu'on n'est pas root à ce moment.

Je vais consulter mes collègues sysunix pour voir si il y a un possibilité de contourner cela côté ssh.
Sinon il faudra utiliser un autre protocole pour svn.

oui tu peux faire tourner des process sous un uid et pas un user.

Actions #4

Updated by Hoffmann Dirk about 1 year ago

Merci, j'ai appris quelque chose. Et tous les programmes ne sont pas aussi pointilleux sur l'UID ; mais on comprend que ssh doit l'être.

Comme le client n'est pas privilégié, il faut compléter ma proposition par une ligne comme

%users  localhost=  (svnclient) NOPASSWD:/bin/ssh *

dans les fichiers sudoers probablement.

Actions #5

Updated by ROUET Jean-René about 1 year ago

on ne peut pas jouer avec les sudoers non plus.

voici le code source de open-ssh

The user ID of the container is generated dynamically, it doesn't have an associated entry in /etc/passwd.
openssh-clients commands like ssh, sftp and scp invoke getpwuid
getpwuid is a function that returns a pointer to a structure containing the broken-out fields of the record in the password database (e.g., the local password file /etc/passwd, NIS, and LDAP) that matches the username name.
Raw

            /* Get user data. */
            pw = getpwuid(getuid());
            if (!pw) {
                    logit("No user exists for uid %lu", (u_long)getuid());
                    exit(255);

if there is no uid in /etc/password then the command fails end exits

exit 255

mais j'ai trouvé une solution que je vais tester

Actions #6

Updated by ROUET Jean-René about 1 year ago

  • Status changed from In progress to Resolved

le problème est résolu

Actions #7

Updated by Hoffmann Dirk about 1 year ago

Merci.
Est-ce le moment pour rappeler le problème avec git, #41189 ?

Actions

Also available in: Atom PDF