1 votes

Permissions du répertoire utilisateur sur le serveur SSH

J'ai un serveur SSH qui fonctionne principalement pour moi, mais j'ai maintenant du code que j'aimerais partager avec mes collègues via SVN.

Je suis en mesure de le partager avec svn+ssh en créant un compte séparé appelé 'svn', mais 'svn' peut également être utilisé pour se connecter et visualiser mes fichiers (dans /home/mine/Documents/ etc.). J'ai essayé de définir le Shell de bin/sh à bin/false dans /etc/passwd, mais cela bloquera également les utilisateurs pour obtenir mes programmes via svn+ssh.

Avez-vous des suggestions ?

Merci beaucoup ! -Stephen

4voto

Insyte Points 9294

Il est en fait assez simple d'obtenir exactement ce que vous décrivez ; la clé est l'option "commande forcée" de ssh. En fait, vous dites à ssh que, quelle que soit la commande que le client essaie d'exécuter, il exécute toujours la commande forcée. Vous définissez la commande forcée pour pointer vers un simple wrapper script qui vérifie que la commande est svnserve -t . Si c'est le cas, il s'exécute comme demandé. Sinon, il se termine. C'est le script que j'utilise :

#!/bin/bash
# 
# Verify that the requested command is an svnserve call.
#
# Note that sshd stores the command requested by the client in 
# the variable "SSH\_ORIGINAL\_COMMAND".

if \[\[ $SSH\_ORIGINAL\_COMMAND = "svnserve -t" \]\]
then
        exec $SSH\_ORIGINAL\_COMMAND
else
        echo "You are only allowed svn access to this server."
fi

Il y a deux façons de régler cette commande forcée :

  1. Si vos utilisateurs se connectent en utilisant l'authentification par clé (et ils devraient le faire), vous pouvez ajouter ``command="/usr/local/sbin/validate_svn'' comme premier champ de leur clé publique dans le fichier ~/.ssh/authorized_keys . Pour que cela soit sûr, vous devez cependant désactiver l'authentification par mot de passe. Sinon, ils peuvent se connecter avec un mot de passe (en contournant la commande forcée) et éditer ~/.ssh/authorized_keys pour supprimer la restriction.
  2. Ajouter une strophe "Match" à la fin de /etc/ssh/sshd_config pour le ou les utilisateurs qui ne devraient pouvoir utiliser que svn. Cela devrait ressembler à quelque chose comme ceci :

    Match user svn ForceCommand /usr/local/bin/validate_svn

1voto

Swoogan Points 1947

Vous devez changer les permissions sur votre répertoire personnel.

$ chmod 750 /home/mine

0voto

Steven Robbins Points 101

Ne pouvez-vous pas utiliser http/https ? Vous pouvez simplement utiliser un mécanisme d'authentification de style .htaccess/htpasswd alors, plutôt que de créer des comptes Shell appropriés.

Vous pourriez être en mesure de spécifier une authentification alternative (en utilisant un fichier de mots de passe séparé) pour svn+ssh également, mais je ne l'ai jamais fait.

0voto

Matt Ball Points 241

Si vous ne voulez pas que l'utilisateur nommé "svn" puisse voir vos fichiers - c'est-à-dire que vous voulez que cet utilisateur ait accès à autre chose qu'au dépôt SVN, il vous suffit de modifier un peu les permissions. Savez-vous comment utiliser chmod ?

0voto

Mike Points 31

Merci à tous pour votre aide ! Je n'avais pas réalisé que je devais seulement donner un chmod au répertoire de premier niveau. J'écris beaucoup de programmes de calcul pour la recherche scientifique, mais je commence tout juste à m'intéresser au contrôle des révisions et à la distribution du code (si j'avais des points de "réputation", je vous voterais pour vous). Insyte : Je suis follement enchanté par vos instructions pour utiliser ForceCommand - j'ai une autre tâche de partage (des données archivées pour lesquelles je n'utilise pas SVN donc je vais essayer de trouver comment utiliser pour scp) pour laquelle ce sera une solution très élégante ! -Stephen

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X