Créer un utilisateur distant uniquement sous OS X?

15

Je voudrais créer un utilisateur sur OS X qui dispose de privilèges de connexion ssh à distance où ils peuvent accéder à un certain dossier / chemin / vers / les / produits / et ajouter / modifier / supprimer des fichiers manuellement ou via rsync tandis que le reste du Mac est hors limites (en dehors de leur répertoire personnel).

Idéalement, l'utilisateur ne devrait pas avoir accès à l'exécution d'autres programmes que rsync.

Cet utilisateur va juste être utilisé par un serveur de build pour se connecter et déployer des fichiers. Je souhaite utiliser une paire de clés publique / privée afin que le script de génération ne nécessite pas de saisie de mot de passe.

Comment puis-je accomplir cela?

chrisan
la source

Réponses:

9

La meilleure façon de le faire est de créer une prison chroot pour l'utilisateur. Je vais nettoyer la réponse ici quand je rentrerai à la maison mais j'ai posté la solution sur mon blog.

https://thefragens.com/chrootd-sftp-on-mac-os-x-server/

Vous trouverez ci-dessous la plupart des instructions du post ci-dessus.

Tout d'abord, vous devez créer le nouvel utilisateur dans Admin de groupe de travail et leur attribuer des privilèges d'accès pour SSH via Admin Serveur ou les affecter à un groupe disposant de privilèges d'accès SSH. Une discussion plus approfondie est présentée ci-dessous.

Depuis le terminal, commencez à droite.

sudo cp /etc/sshd_config /etc/sshd_config.bkup

sudo chown root /
sudo chmod 755 /
sudo mkdir -p /chroot/user/scratchpad
sudo chown -R root /chroot
sudo chown user /chroot/user/scratchpad
sudo chmod -R 755 /chroot

Chaque nouvel utilisateur supplémentaire ajouté sera alors quelque chose dans le sens de ce qui suit.

sudo mkdir -p /chroot/user2/scratchpad
sudo chown root /chroot/user2
sudo chown user2 /chroot/user2/scratchpad
sudo chmod -R 755 /chroot/user2

Chaque dossier dans lequel le chemin vers la prison chroot doit appartenir root. Je ne pense pas que le groupe dans lequel se trouve le dossier importe. Ce que j'ai fait ci-dessus était de

  1. sauvegarde /etc/sshd_config
  2. changer la propriété du répertoire racine en root
  3. changer les autorisations du répertoire racine en 755
  4. créer un dossier chroot
  5. créer un dossier utilisateur dans le dossier chroot
  6. créer un dossier dans le dossier utilisateur que l'utilisateur peut modifier
  7. définir la propriété et les autorisations

Maintenant, modifiez /etc/sshd_configce qui suit.

#Subsystem  sftp    /usr/libexec/sftp-server
Subsystem   sftp    internal-sftp

Match User user
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /chroot/user

Cela crée une prison chroot que lorsque l'utilisateur se connecte les déposera dans le dossier /chroot/user, dans ce dossier est un dossier auquel ils peuvent ajouter des choses /chroot/user/scratchpad.

Si vous souhaitez créer un groupe dans l'administrateur du groupe de travail pour les «utilisateurs Chroot», puis ajoutez les nouveaux utilisateurs que vous avez créés dans l'administrateur du groupe de travail au groupe, vous n'aurez pas à continuer de modifier le /etc/sshd_configfichier. Au lieu de ce qui précède, ajoutez ce qui suit. Assurez-vous d'ajouter le groupe «Utilisateurs Chroot» à la liste de contrôle d'accès SSH dans Admin Serveur.

Match Group chrootusers
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /chroot/%u

Pour tester si ce qui précède fonctionne, émettez ce qui suit à partir du terminal.

$ sftp [email protected]
Password:
sftp>
afragen
la source
Juste résoudre mes propres problèmes et documenter au cas où je devrais le faire à nouveau. ;-)
afragen